JavaScript এ Operators কি ?
JavaScript এ Operators হচ্ছে কতগুলো symbol যা JavaScript Language দিয়ে কিছু নির্দিষ্ট mathematical, relational এবং logical সহ আরো অনেক ধরণের কার্য (operation) সম্পাদন করার নির্দেশনা পাঠায়। এবং নির্দেশনা অনুযায়ী JavaScript সেই নির্দিষ্ট কাজের ফলাফল প্রদর্শন করে।
JavaScript এ Operators কত প্রকার? এবং কি কি ?
JavaScript এ Operator মূলত ১১ ধরণের, নিচে Operator গুলোর লিস্ট দেয়া হলো :
- Arithmetic Operators বা গাণিতিক কাজের Operator: (+,-,*,/,%,**)
- Assignment Operators বা JavaScript Variable এ যেকোনো মান (Value) সংরক্ষণের Operator : (=)
- Bitwise Operators বা JavaScript এ Binary কাজের Operator :-(&,|,^,~,<<,>>,<<=,>>=,>>>=,&=, ^=,|=)
- Comparison Operators বা দুই বা ততোধিক Value এর মধ্যে তুলনা করার Operator :-(==,!=,===,!==,<,>,<=,>=)
- Incrementing/Decrementing Operators বা 1 করে বৃদ্ধি বা কমানোর Operator:-(++,- -)
- Logical Operators বা একাধিক অবস্থার বা condition এর উপর ভিত্তি করে সিদ্ধান্ত নেওয়ার Operator:-(&&,||,!)
- String Operators বা এক বা একাধিক string এর সাথে জোড়া লাগানোর Operator:-(+)
- Type Operators বা কোনো একটা JavaScript Variable কোনো class এর Instance কিনা তা চেক করার operator:-(instanceof) বা কোনো একটা variable বা value এর type কি তা চেক করার জন্য typeof Operator
- Ternery Operator বা if..else কার্য সম্পাদন করার অপারেটর।
- delete Operator: বা কোনো একটা Object এর নির্দিষ্ট property delete করার জন্য delete operator ব্যবহৃত হয়।
- in Operator: Object এর নির্দিষ্ট property খুঁজে বের করার জন্য ব্যবহৃত হয়।
JavaScript এ Operand কি ?
Operator এর দুই পাশে যেই সব variable অথবা value থাকে, JavaScript অথবা যেকোনো Programming Language এর পরিভাষায় একে Operand বলে। নিচের উদাহরণ থেকে বুঝে নেয়া যাক।
<!DOCTYPE html>
<html>
<body>
<script>
var a=5;
document.write(a+5);
</script>
</body>
</html>
এখানে plus sign (+) এর দুই পাশের যথাক্রমে a এবং 5 এই দুইটা ই Operand আর plus sign (+) টি হচ্ছে Operator
Operator Precedence কি?
JavaScript এ Operator Precedence হচ্ছে কিছু rules বা নিয়মের সমষ্টি যা দিয়ে JavaScript এ যে কোনো কাজে কোন কাজটি আগে সম্পাদিত হবে তা নির্ধারিত হয়। নিচের উদাহরণ থেকে বুঝে নেয়া যাক।
<!DOCTYPE html>
<html>
<body>
<script>
document.write(1 + 5 * 3); //Output 16 But why not 18?
</script>
</body>
</html>
ব্যাখ্যা: উপরের কোডের ফলাফল 18 না এসে 16 আসবে। এর মূল কারণ হচ্ছে, আমাদের এখানে ব্যবহৃত দুটি operator এর মধ্যে Operator Precedence Rules অনুযায়ী addition (“+”) Operator টির চেয়ে multiplication (“*”) Operator টি বেশি অগ্রাধিকার প্রাপ্ত । এবার নিচের আরেকটি উদাহরণ লক্ষ্য করা যাক :
<!DOCTYPE html>
<html>
<body>
<script>
document.write((1 + 5) * 3); //Output 18 But why not 16?
</script>
</body>
</html>
ব্যাখ্যা: উপরের উদাহরণে Parentheses “()” Operator টি Multiplication “*” Operator এর চেয়ে বেশি অগ্রাধিকার প্রাপ্ত হওয়ায়, প্রথমে Parentheses এর মধ্যের addition এর কাজটি সম্পাদিত হয়। তারপর multiplication “*” এর কাজটি সম্পাদিত হয়।
Operator Associativity কি?
Operator Associativity হচ্ছে, JavaScript অথবা যেকোনো Programming Language এ parentheses অনুপস্থিতিতে একই Precedence এর Operator গুলোর মধ্যে কোন Operator টি অগ্রাধিকার প্রাপ্ত হবে তা নির্ধারণ করা।
JavaScript এ Operator Associativity কত প্রকার? এবং কি কি ?
JavaScript এ Operator Associativity দুই প্রকার :
- Right to Left (অর্থাৎ: ডানদিকের Operator অগ্রগণ্য হবে। )
- Left to Right (অর্থাৎ: বামদিকের Operator অগ্রগণ্য হবে। )
নিম্নে JavaScript Operator Precedence এর একটা তালিকা দেওয়া হলো নিচের table এ Operator Precedence 1 অগ্রগন্যতা সবচেয়ে বেশি এভাবে এক এক করে নিচে যাবে। এই তালিকাটি মনে রাখা খুব জরুরী। তা না হলে বিভিন্ন Mathematical এবং Programming এর সমস্যা সমাধান করতে গেলে কাঙ্খিত ফলাফল না ও পেতে পারেন।
Table 1 operator precedence and associativity in JavaScript
Operator | Operator Use | Operator Associativity | Operator Precedence |
---|---|---|---|
() | Method/function call, grouping | Left to right | Highest — 1 |
[] | Array access | Left to right | 1 |
. | Object property access | Left to right | 1 |
++ | Increment | Right to left | 2 |
— | Decrement | Right to left | 2 |
– | Negation | Right to left | 2 |
! | Logical NOT | Right to left | 2 |
~ | Bitwise NOT | Right to left | 2 |
delete | Removes array value or object property | Right to left | 2 |
new | Creates an object | Right to left | 2 |
typeof | Returns data type | Right to left | 2 |
void | Specifies no value to return | Right to left | 2 |
/ | Division | Left to right | 3 |
* | Multiplication | Left to right | 3 |
% | Modulus | Left to right | 3 |
+ | Plus | Left to right | 4 |
+ | String Concatenation | Left to right | 4 |
– | Subtraction | Left to right | 4 |
>> | Bitwise right-shift | Left to right | 5 |
<< | Bitwise left-shift | Left to right | 5 |
>, >= | Greater than, greater than or equal to | Left to right | 6 |
<, <= | Less than, less than or equal to | Left to right | 6 |
== | Equality | Left to right | 7 |
!= | Inequality | Left to right | 7 |
=== | Identity operator — equal to (and same data type) | Left to right | 7 |
!== | Non-identity operator — not equal to (or don’t have the same data type) | Left to right | 7 |
& | Bitwise AND | Left to right | 8 |
^ | Bitwise XOR | Left to right | 9 |
| | Bitwise OR | Left to right | 10 |
&& | Logical AND | Left to right | 11 |
|| | Logical OR | Left to right | 12 |
?: | Conditional branch | Left to right | 13 |
= | Assignment | Right to left | 14 |
*=, /=, %=, +=,, -=, <<=, >>=, >>>=, &=, ^=, |= | Assignment according to the preceding operator | Right to left | 14 |