Skip to main content

Precedence and Associativity of Java operators

Precedence is the order to solve the operators. For simplicity, let's see the table

Operator (Higher to Lower Precedence)

  Operators Precedence
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 = += -= *= /= %= &= ^= |= <<= >>= >>>=

Now, If we take an example and try to solve an expression, There can be a case of operators with the same precedence.

ex. 10 * 20 / 4 % 2

When operators of equal precedence appear in the same expression, a rule must govern which is evaluated first. Now we use their Associativity.

There is two kind of Associativity:
  • Left to Right
  • Right to Left
For Unary Operators:
Except the postfix operators(expr++ expr--), All the unary operators have got Right to Left Associativity.

For Binary Operators:
Except the assignment operators, All binary operators have got left to right Associativity.


  1. This information is meaningful and magnificent which you have shared here about the precedence and associativity of Java operators. I am impressed by the details that you have shared in this post and It reveals how nicely you understand this subject. I would like to thanks for sharing this article here. Best Advanced Java & Data Structures Course In Delhi

  2. Atomic Email Hunter Crack Registration Code Download lets you manage hundreds or thousands of emails quickly and easily. letter. You can then download it from .Atomic Email Hunter Crack

  3. It is the perfect choice to convert any table. Supported input formats include Excel and E..., Coolutils Total Excel Converter Free download with link.
    Coolutils Total Csv Converter


Post a Comment


Popular posts from this blog

Why "F" and "L" suffix | (10.0F, 10L)

Let us take it this way, We will create their needs. So we will get why they are needed. Try to guess, which functions will be executed in the following program: public class MyClass {     public static void main(String args[]) {         MyClass obj = new MyClass();         obj.fun1(10);     }     void fun1(byte val){         System.out.println(val);     }     void fun1(int val){         System.out.println(val);     }     void fun1(float val){         System.out.println(val);     }     void fun1(long val){         System.out.println(val);     }     } It seems like every method is capable to run this program because 10 is still literal because It has no data type. Before Java, In previous technologies, this scenario gave an ambiguity error. But Java solves this problem by removing the concepts of literals. It means Java provide a data type immediately when these born. So here 10 is no more literal. Java provides Integer data type for it. So now it is of Integer t

only large files upload on S3 | Ruby On Rails

models/attachment.rb class Attachment < ApplicationRecord after_initialize :set_storage private def set_storage # larger that 5mb file would be upload on s3 if file . blob . byte_size > 5_000_000 Rails . application . config . active_storage . service = :amazon else Rails . application . config . active_storage . service = :local end end # end of private end

Typecasting | How is Long to Float Conversion possible?

We will take a brief description of Typecasting and will try to do focus on Log to Float Conversion. Typecasting: Assigning a value of one data type to another. When we assign a value of smaller data type to a bigger one. it is called Widening. Java did this conversion automatically as they are compatible. As shown in the following figure: One another kind of conversion, when automatic conversion not possible i.e. when they are not compatible is Shortening. It will be just opposite of above and diagram will be reversed. How is Long to Float Conversion possible? If we look carefully at the diagram, there is one conversion which looks questionable is Long(8 bytes) to Float(4 bytes) conversion. It looks like data lossy conversion. Actually, Type conversion does two things: Either change in range or change in behavior or both. Change in Range: short a = 3456 // this value can be varied within the range of -32768 to 32767 int b = a // now this value can be varied wi