title: In what order do angular watchers and event listeners execute?
body: <p>If one changes a scope property first, and then broadcasts an event second, will the corresponding watcher callback and event listeners callback always be executed in that same order? For example:</p>
  
  <pre><code>$scope.foo = 3;
  $scope.$broadcast('bar');
  </code></pre>
  
  <p>and elsewhere:</p>
  
  <pre><code>$scope.$watch('foo', function fn1(){...});
  $scope.$on('bar', function fn2(){...});
  </code></pre>
  
  <p>Will <code>fn1</code> always be executed prior to <code>fn2</code>, or visa-versa, or can the order not be relied upon? Please cite sources, preferably to official angular docs. </p>
  
  <p>In case it matters: lets assume the $scope.foo= and the $broadcast occur in a function invoked by an ng-click (i.e. user interaction)</p>
  
  <p>[aside] Sorry question title is sloppy - please rename if you have something better.</p>