Программист, помни, на собеседовании всегда найдется человек, который высушит тебе мозги приоритетами операций и вот такой вот фигней - $a = ++$b - $a * ($b--) > 5 ? ++$a^$b : $b-=5;
На деле знание приоритетов не особо нужно, потому что сложные выражения все равно лучше обрамлять скобками, чтобы не запутаться. Но часто бывает что человек даже не знает что спросить (ну или просто хочет сбить цену, спрашивая то, что все по идее должны знать, но так как редко пользуются - то не помнят).
Поэтому, если ищем работу - то вот это надо выучить:
| Ассоциативность | Операторы |
|---|---|
| неассоциативные | clone new |
| левая | [ |
| неассоциативные | ++ -- |
| неассоциативные | ~ - (int) (float) (string) (array) (object) (bool) @ |
| неассоциативные | instanceof |
| правая | ! |
| левая | * / % |
| левая | + - . |
| левая | << >> |
| неассоциативные | < <= > >= <> |
| неассоциативные | == != === !== |
| левая | & |
| левая | ^ |
| левая | | |
| левая | && |
| левая | || |
| левая | ? : |
| правая | = += -= *= /= .= %= &= |= ^= <<= >>= |
| левая | and |
| левая | xor |
| левая | or |
| левая | , |
Левая ассоциативность означает, что выражение будет вычисляться слева направо, правая - наоборот. На примере:
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0: true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5