انا اعتقد المثال اللي هوضحه يوصل الشرح بشكل افضل بخصوص ال 
 
$scope.$watch
	انها عبارة عن function بتاخد عدد  2 ( function as a parameters)  
 
1- A value function
2- A listener function
	وده مثال : لشكلها العام عند كتابتها
 
$scope.$watch(function() {},
              function() {}
             );
	 
 
	ال function الاولي عبارة عن القيمة وال function التانية عبارة عن ال listener  او المستمع اللي لما يحدث اي جديد لل function الاولي اللي هي ال value ال function التانية هتشتغل اوتوماتيك 
 
	بشكل افضل كمان هنا زي المثال اللي انت وضحته ده :-
 
  $scope.$watch('values', function () {
    $scope.sum = $scope.values.reduce(function(a, b) {
      return a + b;
    });
  }, true);
	ده معناه ان لما القيمة اللي اسمها values الاولي يحصلها اي update ال function التانية اللي هي ال listener  المفروض هشتغل اوتوماتيك عشان تفعل اللي هيحصل