$watch is a method on the scope object which is used to watch expressions. The expression can be either
strings or functions. It can be called wherever you have access to scope (a controller or a directive linking
function).
$observe is a method on the attrs object which is only used to observe the value change of a DOM attribute. It is
only used inside directives.
Note - All $observes and $watches are checked on every digest cycle.