You left out cardio. If you can't breathe, you can't fight!
Unless you like picking fights for fun, learn how to chop people in the throat, kick them in the balls, and gouge out their eyes. Use pens, keys, whatever instrument you have handy to stab the larynx or the eye. Practice sprawling because everybody and their brother's mother fancies himself a UFC fighter these days.
If you are attacked by multiple attackers and can do so, RUN. If you are forced to fight for whatever reason, put your back to a wall and fight them off as best you can.
Use the element of surprise. If you know you aren't going to be able to get away, hit him while he is talking trash. Action is faster than reaction. Put your hands up close to your face, elbows in, and tell him, "Look, I don't want any trouble.." right before you chop his ass in the throat and knee him in the balls.
Buy a fighting dummy and practice throat strikes and palm heels til you drop from exhaustion. Imagine your loved ones are being threatened and put everything you have into taking the dummy out. You will be surprised at how proficient you can become hitting someone in the throat if you practice the same few strikes repeatedly, for 15 minutes a day. They will be ingrained in muscle memory and you won't have to think about it, unlike training in a system where you have to learn 50 techniques per belt level, and you never train any of them well enough to actually use it when you need it.
Get a concealed carry permit and carry where allowed. Buy a decent, legal, locking blade knife and carry it with you at all times.
Learn how to be aware of your surroundings. Check out who is in the convenience store before you go in. Who's waiting in the parking lot? Watch for the tingling sensation in the back of your neck or the weird feeling in the pit of your stomach, your eyes and subconscious mind will pick up details that something isn't right before your conscious brain kicks in.
Be wary of grappling in real life. You don't want to be wrestling with somebody in the parking lot while this guy's buddies try to beat your head in. Practice grappling to learn escapes and get back to your feet. You're not going to tap him out, and some guys don't feel broken bones in the adrenaline rush. Think eyes, throat, and balls at all times.
If you aren't young and in shape, training full-time, you will never beat a guy who is at his own game. Train in BJJ or kickboxing or Muay Thai if you enjoy the sport and want to get in shape, but don't think it will make you unbeatable. I have heard people say that you need to train in BJJ because you will need to know what to do if someone like Tito Ortiz or Randy Couture attacks you. Hellooo! I don't care how long I train at those disciplines, I will never beat those guys with those techniques. I will need a weapon and the element of surprise to have any chance at all.
In my opinion, the will to survive, the ability to improvise, and actually TAKING ACTION are the most crucial elements needed for self-defense for a person who isn't training to be a fighter.
EDITED TO ADD: I agree with Gary, we all need to work on being in shape and at least learn the basics, i.e. how to throw a punch or knife hand, shoot a gun, avoid takedowns, etc. Edited by: White Shogun