Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Lua, etc
 
BODMAS - the order a computer evaluates arithmetic expressions

What order does a computer program use to evaluate expressions? If I write
  2 + 3 * 4 + 5
does it start off, left to right ...
  2 + 3 is 5
  5 * 4 is 20
  20 + 5 is 25

No! it does not, even though the newcomer might think that was the most natural way for it to work.

Almost all programming languages use a system in which operators of some types are run first, then operators of different types. In our example above, it runs he multiplication before the additions, so
  3 * 4 is 12
  2 + 12 is 14
  14 + 4 is 19

And you see that's a very different result to the 25 if we had gone left to right. This really matters to all programmers!

There's a common acronymn that's used - BODMAS:

Brackets     .
Order / Index
Division
Multipication
Addition
Subtraction

• Anything that's in round brackets is run first (and that's very important, because it means you can add brackets to change the order of evaluation if you need to do so)

• Then orders / indexes are run. They are "raise to the power of" operations such as
  2 ** 7
for 2 to the power 8 - i.e. 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 which is 256

• Then divisions and multiplications (these are done at the same time, from left to right within your expression)
  16 / 4 * 2
will give the result 8 rather than 2, because the division, which is the same level as the multiplication, is to the left of the multiplication.

• Finally (in BODMAS), additions and subtractions are performed in the same "pass", again from left to right.

Precedence order may confuse the newcomer from time to time, but the heirarcy tree that's used has stood the text of time, and is sensible for real use, and pretty standard. There are many other operators you'll find yourself using in some of the languages we teach, and they typically slot in "naturally".


BODMAS is covered on all our "learning to program in " ... courses:
  Learning to program in PYTHON
  Learning to program in C
  Learning to program in Perl
  Learning to program in C++
  Learning to program in Ruby
  Learning to program in PHP
  Learning to program in Tcl
  Learning to program in Lua
If you're already an experienced programmer in another langauge, please see our full schedule as we run other courses which will help you convert without teaching you the basics you already know.
(written 2012-11-09, updated 2012-11-10)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
C201 - C and C based languages - C Language Fundamentals
  [4566] C - why is slow to write and debug) but fast to run? - (2015-11-01)
  [4555] Preprocessor directives in C and C++ - what they mean - (2015-10-27)
  [4324] Learning to program - variables and constants - (2014-11-22)
  [3591] Integer types, and integer overflows, in C - (2012-01-25)
  [3278] Do I need to initialise variables - programming in C, C++, Perl, PHP, Python, Ruby or Java. - (2011-05-05)
  [3234] Your program - you just provide the filling in the sandwich - (2011-04-08)
  [3120] Learning to write good programs in C and C++ - separating out repeated code - (2011-01-04)
  [2842] Staring a C course with Hello World - why? - (2010-06-30)
  [2576] What does const mean? C and C++ - (2010-01-15)
  [2005] Variables and pointers and references - C and C++ - (2009-01-23)
  [1671] Compiling C programs with gcc - an overview - (2008-06-10)
  [888] Turning C from source to a running program - (2006-10-06)

H103 - PHP - Variables, Operators and Expressions
  [4642] A small teaching program - demonstration of principles only - (2016-02-08)
  [3916] PHP variables - dynamically typed. What does that mean? - (2012-11-08)
  [2215] If nothing, make it nothing. - (2009-06-02)
  [748] Getting rid of variables after you have finished with them - (2006-06-06)
  [483] Double Dollars in PHP - (2005-11-02)

J703 - Java - Variables
  [4345] Incrementing a variable in Java - Pre and Post Increment - (2014-12-08)
  [3365] Turning bright delegates into bright and knowledgable ones - (2011-07-21)
  [3041] Java - basic rules for arithmetic, variables and conversion - (2010-11-10)
  [3038] Setting up individual variables, and arrays, in Java - some commented examples - (2010-11-09)
  [2153] Class Loading and Variable Conversion in Java - (2009-05-02)
  [2148] Variable scope in Java Servlets and other web applications - (2009-05-01)
  [1448] Question on division (Java) - Also Perl, PHP, Python ... - (2007-11-28)
  [127] Conversion and coercion in Java - (2004-11-22)

P202 - Perl Fundamentals
  [3574] Perl functions such as chop change their input parameters - (2012-01-10)
  [3542] What order are operations performed in, in a Perl expression? - (2011-12-07)
  [3398] Perl - making best use of the flexibility, but also using good coding standards - (2011-08-19)
  [3329] Perl from basics - (2011-06-20)
  [3102] AND and OR operators - what is the difference between logical and bitwise varieties? - (2010-12-24)
  [3059] Object Orientation in an hour and other Perl Lectures - (2010-11-18)
  [2876] Different perl examples - some corners I rarely explore - (2010-07-18)
  [2832] Are you learning Perl? Some more examples for you! - (2010-06-27)
  [2442] Variable storage - Perl, Tcl and Python compared - (2009-10-08)
  [1946] Variable Types in Perl - (2008-12-15)
  [1826] Perl - Subs, Chop v Chomp, => v , - (2008-10-08)
  [1726] Hot Courses - Perl - (2008-07-28)
  [1312] Some one line Perl tips and techniques - (2007-08-21)
  [184] MTBF of coffee machines - (2005-01-20)

R103 - Basic Ruby Language Elements
  [4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
  [4369] Ruby - the second rung of learning the language - (2014-12-28)
  [3758] Ruby - standard operators are overloaded. Perl - they are not - (2012-06-09)
  [3430] Sigils - the characters on the start of variable names in Perl, Ruby and Fortran - (2011-09-10)
  [2617] Comparing floating point numbers - a word of caution and a solution - (2010-02-01)
  [2613] Constants in Ruby - (2010-02-01)
  [2296] Variable scope - what is it, and how does it Ruby? - (2009-07-18)
  [2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
  [986] puts - opposite of chomp in Ruby - (2006-12-15)

T202 - Tcl/Tk - Tcl Fundamentals
  [4453] Tcl variable names - no real limits! - (2015-03-10)
  [1469] Curley brackets v double quotes - Tcl, Tk, Expect - (2007-12-12)
  [1426] Buffering up in Tcl - the empty coke can comparison - (2007-11-10)
  [1282] Stringing together Tcl scripts - (2007-07-29)
  [1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
  [782] Converting between Hex and Decimal in Tcl - (2006-06-28)
  [362] The ireallyreallywanna operator - (2005-06-28)
  [349] Comments in Tcl - (2005-06-16)
  [328] Making programs easy for any user to start - (2005-05-29)
  [210] Joining lists in Tcl. Indirect variables in Tcl. - (2005-02-12)
  [3] Looking for a donkey - (2004-08-05)

U102 - Lua - Numbers and the Math library.
  [4569] Lua - changes to how integers and floats are handled - 5.2 to 5.3 - (2015-11-02)
  [2509] A life lesson from the accuracy of numbers in Excel and Lua - (2009-11-21)
  [2345] Automatically initialising Lua variables the first time - (2009-08-10)
  [1744] Lua examples, Lua Courses - (2008-08-08)
  [1699] If you are learning Lua, here are some more examples - (2008-07-06)

Y102 - Python - Fundamentals
  [4712] A reminder of the key issues to consider in moving from Python 2 to Python 3 - (2016-10-30)
  [4442] Mutable v Immuatble objects in Python, and the implication - (2015-02-24)
  [3886] Formatting output - why we need to, and first Python example - (2012-10-09)
  [3551] Some terms used in programming (Biased towards Python) - (2011-12-12)
  [3181] Beware - a=a+b and a+=b are different - Python - (2011-02-23)
  [3083] Python - fresh examples from recent courses - (2010-12-11)
  [2778] Learning to program in Python 2 ... and / or in Python 3 - (2010-05-24)
  [2368] Python - fresh examples of all the fundamentals - (2009-08-20)
  [1878] Pascals Triangle in Python and Java - (2008-11-10)
  [1461] Python - input v raw input - (2007-12-06)
  [1430] Integer v float - Python - (2007-11-12)
  [956] Python security - trouble with input - (2006-11-30)
  [633] Copying a reference, or cloning - (2006-03-05)


Back to
PHP variables - dynamically typed. What does that mean?
Previous and next
or
Horse's mouth home
Forward to
Multiple page web applications - maintaining state - PHP
Some other Articles
On rememberance, on war, and on preventing the war cycle
Challenge for a photographer
What is a web framework?
Multiple page web applications - maintaining state - PHP
BODMAS - the order a computer evaluates arithmetic expressions
How does PHP work?
While, for, foreach or something else to loop.
How many times ... has this loco headed west through Tenby? - Python exceptions
Sand to Arabia, Coals to Newcastle or Woodburners to Russia
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

1 unpublished comment pending on this page

edit your own (not yet published) comments

© WELL HOUSE CONSULTANTS LTD., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3917_BOD ... sions.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat