สายคอมพ์และสาย Math ทั้งหลายถูกฝังเรื่องลำดับของการทำงาน Operator ต่างๆว่า เราต้องคูณหารก่อนบวกลบนะ และทุกวันนี้ก็เจอคนถกเถียงกันนบ่อยๆในเนตว่า ทำไมต้องทำแบบนี้? แล้วถ้าบวกลบก่อนคูณหารหละ ผิดมั้ย?
วันนี้เลยพามาย้อนรำลึกถึงความหลังกับเรื่องเบาๆเรื่องนี้ "Order of Operations" ที่เชื่อว่าทุกคนคงเคยเรียนมากันหมดแล้ว แต่ลืมกันไปแล้วซะส่วนใหญ่ 555
ลุยเลยละกัน มา !
รู้จักกับ PEMDAS
การคูณหารก่อนบวกลบมีชื่อด้วยนะ มันคือ PEMDAS แปลทีละตัวตามนี้ Parenthesis, Exponents, Multiply, Divide, Add และ Subtract
มีวิธีจำง่ายๆว่า Please Excuse My Dear Aunt Sally (ท่องไปเดี๋ยวก็ง่ายเอง) ซึ่งแต่ละตัวคือลำดับการหยิบ Operator มาคำนวณนั่นเอง ก็คือ ถ้าเจอวงเล็บ (Parenthesis) ให้ทำงานก่อน จากนั้นถ้าเจอ Exponents ก็ทำเป็นลำดับต่อมา ต่อไปตามด้วยคูณหารด้วยลำดับความสำคัญเท่ากัน คูณมาก่อนก็ให้คูณ หารมาก่อนก็ให้หาร สุดท้ายค่อยบวกลบด้วยวิธีคิดเดียวกัน อันไหนมาก่อนให้ทำอันนั้น
และนี่แหละคือลำดับความสำคัญของเครื่องหมายทางคณิตศาสตร์ ที่เราใช้งานกันอยู่จนเป็น Norm อย่างทุกวันนี้
นอกจากนั้นบางประเทศก็เรียกมันว่า BEDMAS หรือ Brackets, Exponents, Divide, Multiply, Add และ Subtract แล้วก็มี BODMAS อีกโดยตัว O ย่อมาจาก Orders (การยกกำลัง Square Root ฯลฯ) ซึ่งทั้งหมดนี้เหมือนกันทุกประการ แค่เรียกคนละชื่อกันตามหลักสูตรของแต่ละประเทศ
PEMDAS เป็นเพียง "ข้อตกลงร่วมกัน"
ก็สงสัยกันนี่เป็นข้อบังคับหรอ ทุกคนต้องทำตามนี้หรอ? ไม่ทำตามนี้คือผิดเลยรึเปล่า?
เปล่าครับ เพราะจริงๆ PEMDAS เป็นแค่ "ข้อตกลงร่วมกัน" หรือ Convention ซึ่งในโลกนี้มี Convention อยู่หลายตัวมาก
ดังนั้น
อาจมีค่าเท่ากับ 14 หรือ 20 ก็ได้ แล้วแต่ข้อตกลงที่ใช้ร่วมกันเท่านั้นเอง
สำหรับคนที่อยู่สายคอมพ์คงจะบอกว่ามันต้องได้ 14 สิ ถ้า 20 ผิดแน่นอน อันนี้ความจริงแล้ว ที่ผิดคือตัวโจทย์ครับที่บอกไม่ชัดเจนว่าใช้ข้อตกลงอะไร
แต่ถ้าพูดให้ชัดๆแบบนี้ "การคำนวณด้านบนโดยใช้ข้อตกลง PEMDAS มีค่าเท่ากับ 20 นั้นผิด" อันนี้เป็นข้อสรุปที่ถูกต้องครับ
ก็เข้าใจตามนี้เนอะ "มันเป็น Convention" ถ้ายกสมการขึ้นมาแล้วคำนวณได้ผลลัพธ์ต่างกันไม่ได้แปลว่าผิดเสมอไป ถ้าอยากจะบอกว่ามันผิดให้ยกชื่อ Convention มาด้วย การเถียงนั้นถึงจะ Valid ครับ
อย่างอันนี้นี่บาปมากที่ไปบอกว่า 8 นั้นผิด ...
ถ้าอยากจะให้ข้างบน Valid ต้องมีเขียนไว้ด้วยว่า PEMDAS ไม่งั้น 8 ก็ถูกได้นาจา
อย่างไรก็ตาม สำหรับงานด้านสายคอมพ์และ Math ข้อตกลงร่วมกันที่เราใช้กันเป็นปกติคือ PEMDAS ครับ ถ้าเกิดไม่ได้มีระบุว่าจะใช้หลักในการคำนวณ เราจะใช้ PEMDAS โดยอัตโนมัติ ซึ่งทำให้เราสามารถทำงานร่วมกันได้นั่นเอง
ประโยชน์ของ PEMDAS
โลกนี้มี Convention การวาง Operator ให้เลือกใช้มากมาย แต่ทำไม PEMDAS ถึงได้รับความนิยมสูงและกลายเป็นข้อตกลงร่วมกันที่สายคอมพ์และ Math ใช้กันเป็นมาตรฐานอยู่ทุกวันนี้?
ก่อนอื่นมาดูความสำคัญของลำดับการวาง Operator กันก่อน หากสมการด้านล่างนี้ถูกเขียนใน PEMDAS เป็นแบบนี้
ถ้าเราเขียนมันแบบปราศจากลำดับ ก็คือมีแค่ตัว P (วงเล็บ) ส่วนที่เหลือตัวใครตัวมันหละก็ สูตรด้านบนก็จะต้องเขียนเป็นแบบนี้
น้ำตาจะไหล ...
แค่นี้ก็คงเห็นประโยชน์ของลำดับความสำคัญของ Operator กันแล้ว หากตกลงกันได้ก็จะลดทอนความซับซ้อนในการเขียนสูตรและสมการลงได้มาก แต่ทำไมต้อง PEMDAS?
สาเหตุเพราะกฎการกระจายการคูณ การคูณสามารถกระจายเข้าสู่ + - ได้ครับ ยกตัวอย่างเช่น
จะกระจายเป็น
ซึ่งถ้าเป็น PEMDAS ก็จะเขียนแบบด้านบนนี้ได้เลย จบ แต่ถ้าเป็น PEASMD จะทำไม่ได้ ต้องใส่วงเล็บรัวๆ
และก็เช่นเดียวกับพวก Expo อย่างการยกกำลัง มันสามารถกระจายเข้าไปในการคูณได้ ทำให้ไม่ต้องเขียนวงเล็บเวลากระจายเสร็จแล้ว
ก็จะเห็นว่า PEMDAS จะเป็นมิตรกับกฎคณิตศาสตร์กว่ามาก รวมถึงถ้ารวมกับการลดทอนเครื่องหมายคูณ (Implied Multiplication) เราจะสามารถเขียนได้สั้นลงไปอีกมหาศาล
ก็ตามนี้ครับ PEMDAS เลยได้รับความนิยมสูงและกลายเป็นข้อตกลงร่วมกันของสายคอมพ์และสาย Math โดยปริยาย เพราะมันทำให้ทุกอย่างสั้นลง และอย่างที่รู้ Math กับคอมพ์ทำงานใกล้ชิดกันตลอด หากไม่ตกลงร่วมกันว่าสมการหรือสูตรที่เขียนขึ้นมานั้นมีลำดับยังไงก็วอดวายแน่นอน ทำงานร่วมกันไม่ได้ไม่ว่าจะระหว่างสายคอมพ์และ Math หรือภายในสายเดียวกันเองก็ตาม ลำดับผิดนิดหน่อยนี่คือทุกอย่างผิดหมดเลยนะ มันเป็นเรื่องซีเรียสมาก
และเนื่องจาก PEMDAS เป็นข้อตกลงมาตรฐานที่ใช้ร่วมกันในสายงานนี้ มันก็เลยถูกตั้งชื่อเรียกอย่างเป็นทางการว่า Order of Operations ครับ
Order of Operations = PEMDAS
ก็ถ้าเห็นคำนี้ก็คือข้อตกลงว่า Expo ก่อนคูณหาร และคูณหารก่อนบวกลบนะ
ย้ำอีกทีว่า PEMDAS เป็นเพียง "ข้อตกลงร่วมกัน" ไม่ใช่ข้อบังคับที่ต้องยึดตามทุกกรณี เพียงแต่ถ้าจะเขียนโปรแกรมแล้วไม่ยอมยึดข้อตกลง Order of Operations (PEMDAS) ก็คงจะทำงานร่วมกับคนอื่นไม่ได้ เพราะทุกภาษาคอมพ์ยึดข้อตกลงเป็นแบบนี้เกือบหมด (หรือจะบอกว่าทั้งหมดก็ได้) รวมถึงก็จะทำงานกับสาย Math ไม่ได้ หรือเอาจริงๆ ทำงานกับสายวิทย์ทั้งหมดไม่ได้เลย อยากอินดี้ก็ต้องทำงานคนเดียวและใช้ตำราใดๆในโลกไม่ได้เลย
ดังนั้นสายวิทย์พอเห็นสมการแล้วก็ต้อง Apply PEMDAS ไปโดยอัตโนมัติเพราะว่าทุกสมการที่อยู่ในตำราล้วนเขียนมาในรูปแบบข้อตกลง PEMDAS ทั้งสิ้น
แต่ถามว่าถ้าไม่ใช้ PEMDAS นี่บอกว่าผิดได้มั้ย? ถ้าทำงานด้านโปรแกรมมิ่งหรือการพิสูจน์ Math แล้วไม่ใช้ อันนี้ผิดแน่นอน เพราะบริบทมันบังคับให้ใช้ PEMDAS มันถูกครอบไว้ตั้งแต่เราก้าวเข้าสู่สายงานด้านนี้ เหมือนทุกสมการมีคำว่า PEMDAS กำกับไว้อยู่แล้วโดยอัตโนมัติ
จะมาอินดี้ว่า
แล้วอยากบวกก่อนค่อยคูณเนี่ย อันนี้ผิดแน่นอน เพราะว่าสูตรด้านบนเป็นสูตรทางวิทยาศาสตร์ ไม่ใช่อะไรที่เขียนมาดื้อๆไม่มีที่มา และผู้เขียนก็เขียนมาในรูปแบบของข้อตกลง PEMDAS นั่นเอง ถึงแม้จะไม่มีคำว่า PEMDAS เขียนไว้ แต่เราตกลงกันไปแต่แรกแล้วในสายงานว่าทุกคนจะใช้รูปแบบนี้ร่วมกันนะ ดังนั้นทุกคนจะเข้าใจร่วมกันทันทีว่ามันต้องคำนวณกันยังไงครับ ไม่มีผิดพลาดแน่นอน
แต่ถ้าดันไปถามแม่ค้าด้วยคำถามด้านล่างนี้
แล้วไปบอกแม่ค้าว่า 0 เป็นคำตอบที่ผิดนี่ไม่ได้ละ เพราะว่าแม่ค้าไม่ได้อยู่ในสายงานที่ต้องยึดกฏ PEMDAS หนิ และมีตรงไหนที่บอกว่าสมการที่เขียนด้านบนเขียนโดยคนที่ยึดข้อตกลง PEMDAS? ... ก็ไม่มี
เจอคำถามแบบนี้ให้ตอบไปว่า "เท่ากับ 6 ถ้าใช้ข้อตกลง Order of Operations" หรือไม่ก็ให้ถามกลับไปว่า "ใช้ลำดับ Operator แบบไหน" ด้วยนะครับ มันไม่ใช่ปัญหาเชาว์ ไม่ใช่ปัญหาโลกแตก แต่เป็นปัญหาที่ "โจทย์ไม่ชัดเจน" เท่านั้นเอง
สรุป
ถ้าสมการหรือการคำนวณนั้นๆอยู่ในเรื่องของวิทยาศาสตร์และการศึกษา การไม่ใช้ PEMDAS ถือว่าผิด ไม่สามารถเอาสมการที่เค้าเขียนมาแล้วมาเถียงว่าต้องบวกก่อนค่อยคูณหารได้ เพราะเราตกลงกันเรียบร้อยแล้วนาจา
แต่ถ้าสมการหรือการคำนวณนั้นไม่เกี่ยวข้องกับงานด้านวิทยาศาสตร์ใดๆ เช่น เขียนมาเล่นๆว่า 1+1+1+1x0
เท่ากับเท่าไหร่ อันนี้ถือว่าเราไม่ได้ตกลงอะไรกันกับใคร และมันจะเป็น 3 หรือ 0 ก็ได้ทั้งคู่ครับ ตราบใดที่ยังไม่มีการกำหนดข้อตกลงนั้น