A string (for example "44+") contains a set of characters. Each character in a string is represented by a specific code or value. The string "ABC" is represented by the values 65,66,67 (in decimal). The string "ABC0123456789" is represented by the values 65,66,67,48,49,50,51,52,53,54,55,56,57 respectively. Therefore, to get the numerical value of the digit characters ('0' to '9') you have to subtract 48 from the character's code.
Regarding your 2nd and 3rd questions: Y is the first number pushed on the stack and X is the second number pushed on the stack. Since the operation is supposed to be between the first and second digits, it should be Y-X and Y/X (it should also be Y+X and Y*X but the order doesn't change the result in this case).
Note that this code won't work well with more than two digits or when the string isn't formatted exactly as in the example.