substr() takes two arguments, although the second can be omitted:
start: the position to start extracting the string from. The first character is 0, the second is 1 and so on. It can be negative in which case it starts from the end of the string where -1 is the last character, -2 is the second to last character and so on.
length: the number of characters to extract from the string. If it's omitted then all characters from start to the end of the string will be included. If it is bigger than the number of remaining characters in the string then (obviously) just the remaining characters will be returned.
The examples below use the following string. I've used numbers so it's easy to see what's going on.
var s = "1234567890";
Get all the characters in the string from the 8th (i.e. start = 7, because it's zero based):
s.substr(7); // returns 890
Get the first two characters from the string:
s.substr(0, 2); // returns 12
Get the last two characters from the string:
s.substr(-2); // returns 90
Get four characters starting from the 4th (i.e. start = 3):
s.substr(3, 4); // returns 4567
If start + length is greater than what's remaining in the string then only the characters to the end of the string included (obviously there isn't anything else to extract) so the resulting string may not be necessarily as long as what you are expecting. This is illustrated in the following example where length passed is 20 but the resulting string is only 4 characters long:
s.substr(6, 20); // returns 7890
Get two characters starting 4 from the end:
s.substr(-4, 2); // returns 78