Chapter 10. Operators
Operator Precedence
The precedence of an operator specifies how "tightly" it binds two expressions together. For example, in the expression 1 + 5 * 3, the answer is 16 and not 18 because the multiplication ("*") operator has a higher precedence than the addition ("+") operator. Parentheses may be used to force precedence, if necessary. For instance: (1 + 5) * 3 evaluates to 18.
The following table lists the precedence of operators with the lowest-precedence operators listed first.
Table 10-1. Operator Precedence
| Associativity | Operators | 
|---|---|
| left | , | 
| left | or | 
| left | xor | 
| left | and | 
| right | |
| right | = += -= *= /= .= %= &= |= ^= <<= >>= | 
| left | ? : | 
| left | || | 
| left | && | 
| left | | | 
| left | ^ | 
| left | & | 
| non-associative | == != === !== | 
| non-associative | < <= > >= | 
| left | << >> | 
| left | + - . | 
| left | * / % | 
| right | ! ~ ++ -- (int) (float) (string) (array) (object) @ | 
| right | [ | 
| non-associative | new | 
Note: Although ! has a higher precedence than =, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the output from foo() is put into $a.
