La priorité des opérateurs détermine l'ordre dans lequel les expressions sont exécutées dans une déclaration.

Il est possible d'ignorer la priorité d'opérateur en utilisant des parenthèses.

L'associativité détermine également un ordre d'exécution pour des opérateurs d'une priorité égale.

Un opérateur associatif à gauche signifie que l'opérande de gauche est d'abord calculée.

int resultat = a + b - c;
// équivaut
int resultat = (a + b) - c;

Un opérateur associatif à droite signifie que l'opérande de droite est d'abord calculée.

int resultat = a += b -= c = a + b;
// équivaut
int resultat = (a += (b -= (c = (a + b))));

double resultat = x * -y - 42 / z % --x + 2;
// équivaut
double resultat = (((x * (-y)) - ((42 / z) % (--x))) + 2);

La table suivante décrit la priorité des opérateurs, du moins élevé vers le plus élevé, ainsi que leur associativité.

Priorité Opérateurs Associativité
1 = += -= *= /= %= <<= >>= >>>= &= |= ^= De gauche à droite
2 ? : De droite à gauche
2 || De gauche à droite
4 && De gauche à droite
5 | De gauche à droite
6 ^ De gauche à droite
7 & De gauche à droite
8 == != De gauche à droite
9 < <= > >= instanceof De gauche à droite
10 << >> >>> De gauche à droite
11 + - De droite à gauche
12 * / % De gauche à droite
13 (type) new De droite à gauche
14 unaire : + -
préfixe : ++ --
~ !
De gauche à droite
15 () [] . suffixe ++ suffixe -- De gauche à droite