OpenBrackets has an excellent explanation