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-6. Operator Precedence**

Associativity | Operators |
---|

left | , |

left | or |

left | xor |

left | and |

right | print |

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

left | ? : |

left | || |

left | && |

left | | |

left | ^ |

left | & |

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

non-associative | < <= > >= |

left | << >> |

left | + - . |

left | * / % |

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

right | [ |

non-associative | new |