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 | |

left | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |

left | ? : |

left | || |

left | && |

left | | |

left | ^ |

left | & |

non-associative | == != === !== |

non-associative | < <= > >= |

left | << >> |

left | + - . |

left | * / % |

right | ! ~ ++ -- (int) (float) (string) (array) (object) @ |

right | [ |

non-associative | new |