so why does it have to put '0' while you can do arithmetic operations with just a normal integer 0 (w/o quotation)?
Because integers ans string are represented differently. result is a string, so you want the digits you store into it to be in character representation. The decimal value of ASCII '0' is 48. So you have to bias the integer digits you store into result by that.
in line 41....does it mean you are adding the sum of the character zero and carry to result?
carry and '0' are converted to a character value, then that character value and the previous result string are concatentate and stored in result.