I'm using currently testng 6.11 version jar and found below obervation.
1. When you are giving no priority then, all test methods will be executed by natural sorting order of testNG that is ... sorted by TestMethod alphabetically in descending order.
2. When you will give any priority, test methods having same priority in same module will be behave similarly point 1.
3. When more than two class you define then, all test methods will be executed with respect to its priority/or default priority regardless of that class. Point 1 is also impacted here for test methods in alphabetical order, but of each individual class (test method order by alphabetical of classA... -> and then test method order by alphabetical of class B)
i.e. class A-> 10 test methods. (5 test method with 0 priority, 5 test method with 1 priority)
class B-> 2 test method (2 test method has default priority, means 0)
Now in execution order I measured as following:
3.1 Class A-> 5 test method having 0 priority will be executed.
3.2 Class B-> 2 test method with having default prority(0 here) will be executed.
3.3 Class A-> rest 5 test method having priority 1 will be executed.
I've also tried with giving 0 priority(although its similar to default priority 0) for class B methods, but it behaves similar.