From: Tim Hunter Date: 2006-04-02T09:13:44+09:00 Subject: Re: Newbie! Programming Calculations Indifferent wrote: > Im new to programming, im learning ruby. > > Here is the guide I am working through: > http://pine.fm/LearnToProgram/?Chapter=01 > > At the bottom of the page there are these sample calculations: > puts 5 * (12-8) + -15 (is that + minus15 or does the + and the - mean > something combined? same for the one below with * and -52) > puts 98 + (59872 / (13*8)) * -52 > > What do they do? What are the brackets for? > I sort of remember doing something simular to this when I was using > excel in a course i did. Is the number is the brackets calculated first? > Can someone explain this to me? Or give me a link were I can find more > information. > > Extreamly confused newbie! Please help! > When you have an expression that uses more than one arithmetic operator, such as 6 + 12 / 3, it's not always obvious which operations should be performed first. Should we add 6 and 12 first, or divide 12 by 3 and then add 6? Ruby follows a couple of very simple rules in this case. Rule 1: First do all the multiplications and divisions, then all the additions and subtractions. Rule 2: If there are more than 1 multiplication or division, or more than one addition or subtraction, do them from left to right. So, for 6 + 12 / 3, Ruby divides 12 by 3 first, which gives it 4, and then adds 6 and 4, so the result is 10. Now it's possible that you may want Ruby to actually add 6 and 12 and then divide the result by 3, so Ruby gives you a way to tell it to do it that way. To do this, enclose 6 + 12 in parentheses: (6 + 12) / 3. Ruby will do the addition, getting 18, and then divide 18 / 3, giving 6. You can nest the parentheses, in which case the most deeply nested expressions are evaluated first: ((3+5)/2)+6 means "add 3 and 5, divide by 2, and add 6". For rule 2, given the expression 24 / 2 * 3, since division and multiplication are equally "important," Ruby just goes left to right. First it divides 24 / 2, giving 12, then multiplies by 3, giving 36. Similarly, for 12 + 3 - 5, Ruby adds 12 and 3, giving 15, and then subtracts 5, giving 10. Regarding -15, or -52, consider that most arithmetic operations are "binary," that is, the operation produces a result by combining two numbers. However, we can say that a number is negative by preceding it with a minus sign. The minus sign is called a "unary" operator. That is, it produces its result from only one number. Since a unary minus sign negates the number it precedes, 25 + =15 adds a negative 15 to 25, which is the same as subtracting 15 from 25.