AngularJS has a concept of powerful data binding. It accomplishes this by keeping a watch on its scope variables. When we change the the variable on $scope object, the $scope object gets automatically changed and vice-versa. Most of the time angular calls the $watch function, but in some cases to update the new values, you may need to call it by yourself.
There are two ways to set up a $watch-
1.by expression- listens(or watches) the $scope and converts to function. 2.by function- it simply watches the function and no conversion is done.
$watch function has three parameters- expression,listener and equality object. The last two parameters are optional. 1.