In this section, we will learn about **Arithmetic** **Operator** **Precedence **and** Operator Associativity***. *

## Operator Precedence

*Precedence *decides which operator will be evaluated first in a case where more than one operator is present in the same calculation.

Operators | Precedence(High to Low) |
---|---|

postfix | expr++ expr— |

unary | ++expr —expr +expr –expr ~ ! |

multiplicative | * / % |

additive | + – |

shift | << >> >>> |

relational | < > <= >= instanceof |

equality | == != |

bitwise AND | & |

bitwise exclusive OR | ^ |

bitwise inclusive OR | | |

logical AND | && |

logical OR | || |

ternary | ? : |

assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |

## Example of Precedence

```
/*
* Here we will see the effect of precedence in operators life
*/
class OperatorPrecedenceExample {
public static void main(String args[]) {
int i = 40;
int j = 80;
int k = 40;
int l = i + j / k;
/*
* In above calculation we are not using any bracket. So which operator
* will be evaluated first is decided by Precedence. As precedence of
* divison(/) is higher then plus(+) as per above table so divison will
* be evaluated first and then plus.
*
* So the output will be 42.
*/
System.out.println("value of L :" + l);
int m = (i + j) / k;
/*
* In above calculation brackets are used so precedence will not come in
* picture and plus(+) will be evaluated first and then divison()/. So
* output will be 3
*/
System.out.println("Value of M:" + m);
}
}
```

## Operator Associativity

If two operators have the same precedence in the calculation then * Associativity* of the operators will be used to decide which operator will be executed first.

## Example of Associativity

```
package jbt.bean;
/*
* Here we will see the effect of precedence in operators life
*/
public class OperatorAssociativityExample {
public static void main(String args[]) {
int i = 40;
int j = 80;
int k = 40;
int l = i / k * 2 + j;
/*
* In above calculation we are not using any bracket. And there are two
* operator of same precedence(divion and multiplication) so which
* operator(/ or *) will be evaluated first is decided by association.
* Associativity of * & / is left to right. So divison will be evaluated
* first then multiplication.
*
* So the output will be 82.
*/
System.out.println("value of L :" + l);
int m = i / (k * 2) + j;
/*
* In above calculation brackets are used so associativity will not come
* in picture and multiply(*) will be evaluated first and then
* divison()/. So output will be 80
*/
System.out.println("Value of M:" + m);
}
}
```

## Operators in Java

Let us discuss each operator individually.

Assignment (=) and Arithmetic operators(+, -, *, /) work the same way as they do in other programming languages, so we will not discuss them here. The precedence for ‘**/**‘ and ‘*****‘ operators is higher than sum(**+**) or minus(**–**) or modular division(**%**)

good examples are not giving you.

Nice coding n commenting …..well structured organized, easy to understand….thanks for big

nicely structured and well understood ….thankyou

Today I stated the learning by seeing this blog, I am the new one to programming. Your blessing is required

Excellent site…it helps a lot.

Excellent site…it helps a lot.

Very good site. It includes good details about Core Java. I am learning Core Java at the moment. i would like to complete Core Java and also rest of the sections.

Thanks for good compilation with good examples.

m = i / (k * 2) + j;

there m=80 is incorrect.

Value will be 80 only. Please check once again.

m = i / (k * 2) + j;

there m=80 is incorrect.

m is integer

nice good…

Good to know that it helped you.