The factorial example is used in many programming tutorials, not to teach you that you need to understand complicated mathematical theory to become a programmer (you don't, so don't worry), but instead to teach you one of the more advanced paradigms of beginner programming: recursion (having a function call itself again and again until it's to-be-returned value is adequate enough to finally be returned).
Learning more about the language is always going to help, though. I would suggest doing the CodeCademy track a second time to see if you've improved. Focus on writing efficient solutions that are better than what you would have done your first time around. Once that is done, give these resources a go:
- http://codeschool.com
- http://lynda.com
- http://teamtreehouse.com
I would also suggest purchasing these books, as they are somewhat the standard learning and reference resources:
- JavaScript: The Good Parts
- JavaScript: The Definitive Guide
There are other books that will help tremendously, and a list of free ones can be found at http://jsbooks.revolunet.com
Other books I recommend:
- Eloquent JavaScript
- Effective JavaScript
- High Performance JavaScript
- Maintainable JavaScript
- Principles of Object-Oriented Programming in JavaScript
- JavaScript Patterns
- The Past, Present and Future of JavaScript
- JavaScript Enlightenment
- Secrets of the JavaScript Ninja