**Operator precedence**

Operator precedence determines which operator is evaluated first when an expression has more than one operators. Eg. 200-4*30 would get 80 because it is evaluated as 200 – (4*30) and not (200-4)*30. The reason is that multiplication * has higher precedence than subtraction(-).

1 | 200 + 4 * 30 is calculated as 200 + (4 * 30) |

**Not as:**

1 | (200 + 4) * 30 |

## **Associativity:**

Associativity defines the order in which operators of the same precedence are evaluated in an expression. Associativity can be either from left to right or right to left.eg.‘*’ and ‘/’ have the same precedence and their associativity is Left to Right, so the expression “100 / 10 * 10” is treated as “(100 / 10) * 10”.

1 | 100 / 10 * 10 is calculated as (100 / 10) * 10 |

**Not as:**

1 | 100 / (10*10) |

**The following table lists operator precedence and associativity.**

Operator | Meaning of operator | Associativity |

()[] -> . | ` Functional call` | Left to right |

! ~ + – ++ — & * sizeof (type) | ` Logical negation ` | Right to left |

* / % | `Multiply ` | Left to right |

+ – | `Binary plus(Addition) ` | Left to right |

<< >> | ` Left shift` | Left to right |

< <= > >= | `Less than` | Left to right |

== != | `Equal to` | Left to right |

& | `Bitwise AND ` | Left to right |

^ | `Bitwise exclusive OR ` | Left to right |

| | ` Bitwise OR ` | Left to right |

&& | `Logical AND` | Left to right |

|| | ` Logical OR ` | Left to right |

?: | ` Conditional Operator ` | Right to left |

= *= /= %= -= &= ^= |= <<= >>= | `Simple assignment` | Right to left |

, | ` Separator of expressions ` | Left to right |