(0, 3) returns everything up to but not including the character at the 3rd index. That's how range works in Python, anyway. That would explain why (0,2) only gives the characters at 0 and 1.
Also, in January, J is 0, a is 1, and n is 2.
Okay ... Y is "up to but excluding". Yay! I got it. Awesome, thanks for explaining this so simply.
The first parameter is the starting point. The second parameter is the number of characters, call it n.
Remember that arrays and strings are indexed starting at 0. n + SP - 1 = endPos or the length of the string - 1 (for the last character), whichever is lower.
This took a bit more understanding, but I get it. Okay.
Thanks, coders! /end
P.S. Sorry for the almost spam. I tried to find the answer online, but there doesn't really seem to be much in the way of succinct explanations.