JavaScript Operator Precedence কীভাবে কাজ করে

JavaScript Operator Precedence ও Associativity বিস্তারিত বাংলায় জানুন। উদাহরণসহ শিখুন কোন অপারেটর আগে execute হয়, কেন parentheses ব্যবহার জরুরি

Operator Precedence এর সংজ্ঞা

JavaScript Operator Precedence বলতে বোঝায়, কোনো প্রোগ্রামে একাধিক অপারেটর ব্যবহার করা হলে কোনটা আগে execute হবে আর কোনটা পরে execute হবে সেই নিয়ম। উদাহরণ হিসেবে ধরুন:

let result = 10 + 5 * 2; console.log(result); // Output: 20 (না 30?) 

এখানে * (গুণ) এর precedence বেশি, তাই আগে multiplication হবে (5*2 = 10), তারপর addition হবে (10+10 = 20)। যদি precedence না জানা থাকে তবে ভুল result মনে হতে পারে।

কেন Operator Precedence গুরুত্বপূর্ণ

Operator Precedence জানা না থাকলে আপনার কোডে অনেক logical error তৈরি হবে। যেমন, একটা calculation, একটা condition বা একটা logical comparison করার সময় আপনি যদি মনে করেন একটা operator আগে execute হবে, অথচ বাস্তবে অন্যটা আগে execute হয়ে যায়, তাহলে পুরো program-এর আউটপুট বদলে যেতে পারে।

উদাহরণ হিসেবে ধরুন –

let x = 10; let y = 20; let result = x + y > 25; console.log(result); // true or false? 

এখানে + এবং > উভয় অপারেটর আছে। precedence অনুযায়ী + আগে হবে, তারপর comparison হবে। অর্থাৎ (10+20) > 25 → 30 > 25 → true।

Associativity কীভাবে কাজ করে

যখন দুইটা অপারেটরের precedence সমান হয়, তখন associativity ঠিক করে দেয় কোন দিকে থেকে execution হবে।

Left-to-Right Associativity

অধিকাংশ অপারেটর (যেমন +, -, *, /) left-to-right associativity ফলো করে। মানে equation বাম দিক থেকে ডান দিকে evaluate হবে।

let result = 50 / 5 / 2; console.log(result); // (50/5)=10 → 10/2=5 

Right-to-Left Associativity

কিছু অপারেটর যেমন = (assignment), ** (exponentiation) right-to-left associativity ফলো করে।

let a = b = c = 10; console.log(a, b, c); // 10, 10, 10 let result = 2 ** 3 ** 2; console.log(result); // 2 ** (3 ** 2) = 2 ** 9 = 512 

JavaScript Operator Precedence টেবিল

JavaScript-এ প্রতিটি অপারেটরের একটা নির্দিষ্ট precedence level আছে। এই precedence যত বেশি হবে, তত আগে সেই operator execute হবে।

সর্বোচ্চ Precedence বিশিষ্ট অপারেটর

() (parentheses), ++, --, new, typeof, await ইত্যাদি।

মধ্যম Precedence অপারেটর

*, /, %, +, -, <<, >> ইত্যাদি।

সর্বনিম্ন Precedence অপারেটর

=, +=, -=, ? :, , (comma operator) ইত্যাদি।

Operator Precedence এর কার্যপদ্ধতি উদাহরণ সহ

Mathematical Expression এ Precedence

let result = 10 + 20 * 3; console.log(result); // 70 (না 90?) 

কারণ multiplication-এর precedence addition এর থেকে বেশি। তাই আগে 20*3 = 60, তারপর 10+60 = 70।

Assignment Operator এর ক্ষেত্রে Precedence

let x, y, z; x = y = z = 5; console.log(x, y, z); // সবগুলা 5 হবে 

Logical Operator এর Precedence

let result = true || false && false; console.log(result); // true 

কারণ && এর precedence বেশি, তাই আগে false && false = false, তারপর true || false = true।

Related Posts

Associativity এবং Operator Precedence এর সম্পর্ক

Operator Precedence সবসময় বলে দেয় কোন অপারেটর আগে কাজ করবে। কিন্তু যখন দুইটা অপারেটরের precedence একই হয়, তখন সিদ্ধান্ত নেয় Associativity। একে সহজভাবে বোঝা যায়—একই লেভেলের অপারেটরগুলো বাম দিক থেকে ডান দিকে হবে, নাকি ডান দিক থেকে বাম দিকে হবে।

Left-to-Right Associativity

+, -, *, /, <<, >> প্রায় সবকিছু left-to-right associativity ফলো করে। মানে equation solve হবে একেবারে school math এর মত।

let result = 100 - 50 - 25; console.log(result); // (100-50)=50 → 50-25=25 

যদি left-to-right না হত, তবে (100-(50-25)) = 75 হতো। তাই associativity ঠিক করে execution order।

Right-to-Left Associativity

Assignment operators (=, +=, -=, *=, /=) এবং exponentiation operator (**), right-to-left associativity ফলো করে।

let a = b = c = 20; console.log(a, b, c); // 20 20 20 let power = 2 ** 3 ** 2; console.log(power); // 2 ** (3 ** 2) = 2 ** 9 = 512 

এখানে যদি left-to-right হত, তাহলে (2**3)**2 = 64 আসতো। কিন্তু JavaScript right-to-left বলে, তাই সঠিক result = 512।

Practical Examples & Use Cases

Theory জানলে হবে না, JavaScript Operator Precedence এর আসল শক্তি বোঝা যায় যখন আমরা বাস্তবে কাজ করি। নিচে কিছু practical example দেয়া হলো।

Arithmetic Expressions

let result = (10 + 5) * 2; console.log(result); // 30

let result2 = 10 + 5 * 2;
console.log(result2); // 20

এখানে parentheses (()) ব্যবহার করলে precedence পুরোপুরি override করা যায়।

Conditional Statements

let age = 18; let canVote = age >= 18 && age <= 60; console.log(canVote); // true 

এখানে comparison operators (>=, <=) এর precedence logical operator (&&) এর থেকে বেশি। তাই আগে comparison হবে, তারপর logical evaluation হবে।

Complex Expressions এ Parentheses এর ব্যবহার

let result = (5 + 10) * (20 / (2 ** 2)); console.log(result); // (15) * (20/4) = 15*5 = 75 

Parentheses না দিলে এই result একেবারে আলাদা হত। তাই complex expression এ সবসময় () ব্যবহার করা ভালো। এটা readability ও বাড়ায় এবং ভুল কম হয়।

সারসংক্ষেপ

JavaScript এ Operator Precedence এবং Associativity বুঝা খুব জরুরি। এর মাধ্যমে আপনি বুঝতে পারবেন কোন অপারেটর আগে execute হবে এবং কিভাবে expression evaluate হবে। Precedence না বুঝলে code এ logical bug আসতে বাধ্য। কিন্তু parentheses ব্যবহার করে সবকিছু সহজে control করা যায়।

FAQs Q1: Operator Precedence এবং Associativity এর মধ্যে পার্থক্য কী?

Precedence বলে কোন operator আগে কাজ করবে। Associativity বলে কোন দিক থেকে evaluate হবে।

Q2: সব operator কি left-to-right associative?

না। Assignment এবং exponentiation operators right-to-left associative।

Q3: Parentheses কি সব সময় precedence override করতে পারে?

হ্যাঁ। Parentheses সবসময় highest precedence পায়।

Q4: Logical operators (&& এবং ||) এর precedence কোনটা বেশি?

&& এর precedence বেশি।

Q5: Operator Precedence না জানলে কি হবে?

কোডে ভুল logical output আসবে, আর debugging কঠিন হয়ে যাবে।

About the author

Leo
Hey! I'm Leo. I'm always eager to learn new things and enjoy sharing my knowledge with others.

Post a Comment

To avoid SPAM, all comments will be moderated before being displayed.
Don't share any personal or sensitive information.