The precedence of an operator specifies how "tightly" it binds two expressions together.
In general, operators have a set precedence, or order, in which they are evaluated.
For example, in the expression 10 + 5 * 2, the answer is 20 and not 30 because the multiplication * operator has a higher precedence than the addition + operator.
Parentheses () may be used to force precedence, if necessary. For instance: (10 + 5) * 2 evaluates to 30.
Operators also have an associativity.
When operators have equal precedence their associativity decides how the operators are grouped.
For example:
- is left-associative, so 1 - 2 - 3 is grouped as (1 - 2) - 3 and evaluates to -4.
= is right-associative, so $a = $b = $c is grouped as $a = ($b = $c).
Following Table shows operator precedence and associativity in PHP, where operators with the lowest precedence are at the top, and precedence increases as you go down the table.
| Associativity | Operators |
|---|---|
| Highest Precedence | |
| n/a | () |
| n/a | new |
| right | [] |
| right | ! ~ ++ -- (int) (double) (string) (array) (object) |
| left | * / % |
| left | + - . |
| left | << >> |
| n/a | < <= > >= |
| n/a | == != === !=== |
| left | & |
| left | ^ |
| left | | |
| left | && |
| left | || |
| left | ? : |
| left | = += -= *= /= .= %= |= ^= ~= <<= >>= |
| right | |
| left | and |
| left | xor |
| left | or |
| left | , |
| Lowest Precedence |
<?php
$n1 = 10;
$n2 = 5;
$n3 = 2;
$ans = $n1 + $n2 * $n3;
# * has higher precedence than +
# so first execute $n2 * $n3 the
# answer is added to $n1 which is
echo "$n1 + $n2 * $n3 = $ans<br />";
$ans = ($n1 + $n2) * $n3;
# () has higher precedence than * so bracket execute first
# which is ($n1 + $n2) after addition answer is
# multiplied by $n3 */
echo "($n1 + $n2) * $n3 = $ans<br />";
?>
Ask Question