Currently, you can't mix .orderByPriority() and .orderByChild() as they are different order by functions.
However, you can still solve your problem by only using .orderByPriority(), if you re-structure your data.
Structuring your data a specific way allows you query your data, as if you could use two orderBy functions.
In your case you have a location of "Lessons" that all have a push-id key of their "lesson id": /lessons/$lessonID. 
You could change your structure to key off of the courseId and then the lesson_id: /lessions/$courseID/$lessonID.
The data would look like this:
{
  "lessons": {
    "1": {
      "-K4NQTsjo3iswX4PhKUw": {
        title: "My Course"
      },
      "-K4NAWsjo5iswX4Jk4fa": {
        title: "Another Course"
      }
    }
    "2": {
      "-K4NQTsjo3iswX4PhKUw": {
        title: "My Course"
      },
      "-K4NQPjMZVCoFRYc_1v5": {
        title: "Intro to Data Structure"
      }
    }
  }
}
Now since the key uses the courseID, we can order by by both courseID and priority:
var courseID = $state.params.courseID;
var ref = new Firebase('<my-firebase-app>.firebaseio.com/lessons');
var query = ref.child(courseID).orderByPriority();
var syncArray = $firebaseArray(query);
You can store this in a factory in your AngularJS code.
angular.module('app', ['firebase')
  .constant('FirebaseUrl', '<my-firebase-app>')
  .service('RootRef', ['FirebaseUrl', Firebase])
  .factory('Lessons', Lessons)
  .controller('MainCtrl', MainCtrl);
function Lessons(RootRef) {
  return function Lessons(courseID) {
    var ref = RootRef.child('Lessons');
    var query = ref.child(courseID).orderByPriority();
    return $firebaseArray(query);
  }
}
function MainCtrl($scope, $state, Lessons) {
  var courseID = $state.params.courseID;
  $scope.lessons = Lessons(courseID);
}