JavaScript Bangla Part-3: JavaScript Operator Basics

JavaScript-Operator
JavaScript-Operator

JavaScript এ Operators কি ?

JavaScript এ Operators হচ্ছে কতগুলো symbol যা JavaScript Language দিয়ে কিছু নির্দিষ্ট mathematical, relational এবং logical সহ আরো অনেক ধরণের কার্য (operation) সম্পাদন করার নির্দেশনা পাঠায়। এবং নির্দেশনা অনুযায়ী JavaScript সেই নির্দিষ্ট কাজের ফলাফল প্রদর্শন করে।

JavaScript এ Operators কত প্রকার? এবং কি কি ?

JavaScript এ Operator মূলত ১১ ধরণের, নিচে Operator গুলোর লিস্ট দেয়া হলো :

  1. Arithmetic Operators বা গাণিতিক কাজের Operator: (+,-,*,/,%,**)
  2. Assignment Operators বা JavaScript Variable এ যেকোনো মান (Value) সংরক্ষণের Operator : (=)
  3. Bitwise Operators বা JavaScript এ Binary কাজের Operator :-(&,|,^,~,<<,>>,<<=,>>=,>>>=,&=, ^=,|=)
  4. Comparison Operators বা দুই বা ততোধিক Value এর মধ্যে তুলনা করার Operator :-(==,!=,===,!==,<,>,<=,>=)
  5. Incrementing/Decrementing Operators বা 1 করে বৃদ্ধি বা কমানোর Operator:-(++,- -)
  6. Logical Operators বা একাধিক অবস্থার বা condition এর উপর ভিত্তি করে সিদ্ধান্ত নেওয়ার Operator:-(&&,||,!)
  7. String Operators বা এক বা একাধিক string এর সাথে জোড়া লাগানোর Operator:-(+)
  8. Type Operators বা কোনো একটা JavaScript Variable কোনো class এর Instance কিনা তা চেক করার operator:-(instanceof) বা কোনো একটা variable বা value এর type কি তা চেক করার জন্য typeof Operator
  9. Ternery Operator বা if..else কার্য সম্পাদন করার অপারেটর।
  10. delete Operator: বা কোনো একটা Object এর নির্দিষ্ট property delete করার জন্য delete operator ব্যবহৃত হয়।
  11. 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 দুই প্রকার :

  1. Right to Left (অর্থাৎ: ডানদিকের Operator অগ্রগণ্য হবে। )
  2. 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
, Multiple evaluation Left to right Lowest: 15

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply