Program only runs if Serial.begin and Serial.println are present

If you don't start the Serial port (by using begin()), the serial port will never work. Have you read the manual entry for it?

Are you sure your code stops only when you don't put the serial.print() in it? Couldn't this be a coincidence? Can the test for the light be interfering? Have you tested this with both true and false conditions?

By the way, if you go through the ASCII table you'll realize that what " -'0' " does.