Expression test – Is there a defined priority for model matching?

If you define a g function, do the following:

g[x_?EvenQ] : = "same"
g[x_?NumberQ] : = "number"

why Mathematica will always come back g[2] == "Even", even if NumberQ[2] == True?

Specifically, is there a defined order in which Mathematica will try to match the function cases? Does he evaluate the most specific match first?