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.

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

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

left | ? : |

left | || |

left | && |

left | | |

left | ^ |

left | & |

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

non-associative | < <= > >= |

left | << >> |

left | + - . |

left | * / % |

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

right | [ |

non-associative | new |