잘하다: to do well
못하다: to do badly
Let’s start by taking a look at a verb that ends with 하다, such as 수영하다 (to swim):

수영 = swimming
하다 = to do
Notice how 수영 is essentially a noun–it is the action itself of swimming. It is something you do, hence why 하다 is attached to it. You are doing the swimming, if that makes sense. You can even say 수영을 하다 to mean the same thing–the object particle here suggests are are doing an action of some sort.

So how can you say that you are good at swimming? It’s pretty simple: just take the noun for swimming, 수영, and attach 잘하다 to it. Don’t forget to conjugate 잘하다 also!

수영 + 잘하다 - 다 + 여요 = 수영 잘 해요 = I / you / he / she / they swim(s) well
This can also be translated to “I [or any noun] can swim.”
Conversely, we can use the verb 못하다 the same way to mean “I cannot swim” or “I am bad at swimming”:

수영 + 못하다 - 다 + 여요 = 수영 못 해요 = I cannot swim
Let’s look at another example using the verb 공부하다 (to study). Here, 공부 would be the noun “a study” or “studying” Again, you can think of it as “to do studying,” if that makes sense. Thus, you can use the same formula to say you are good or bad at studying:

공부 + 잘하다 - 다 + 여요 = 공부 잘 해요 = I am good at studying
공부 + 못하다 - 다 + 여요 = 공부 못 해요 = I am bad at studying
Here’s another example: 이해하다 (to understand)

이해 = understanding / comprehension
이해 잘 해요 = I understand / I understand well
이해 못 해요 = I do not understand
Something that may be useful for y’all is to say which languages you can and cannot speak. For example:

한국어를 잘 해요 = I can speak Korean / I speak Korean well
한국어를 못 해요 = I cannot speak Korean / I do not speak Korean well
영어를 잘 해요 = I can speak English / I speak English well
영어를 못 해요 = I cannot speak English / I do not speak English well
*Note that although the verb 말하다 means to speak, we just use the verb 하다 to talk about speaking languages, since it’s inferred that the action in question is “speaking.”

Not too confusing I hope :). But there are many verbs that do not end in 하다. So how are we supposed to say that we can / cannot do those actions? It’ actually perhaps a little simpler than above! Let’s look at the verb (to go).

Simply add 잘 or 못 in front of 가다 to say you can or cannot go:

잘 가요 = I can go (this is what it could possibly translate to, but this sentence is usually used to mean “goodbye”–it could be translated as “go well”)
못 가요 = I can’t go (perhaps your parents won’t let you go to a party or something lol)
Here’s another example: 부르다 (to call / to sing). In this case, we’ll say it means “to sing.”

잘 불러요 = I sing well
못 불러요 = I cannot sing
Interestingly, there’s another word that means “to sing”: 노래하다. Let’s give this one a try too, shall we? It works the same way as the previously 하다 verbs do:

노래 = song
노래 잘 해요 = I can sing / I sing well
노래 못 해요 = I cannot sing / I sing badly
There are also some verbs that look like this:

춤을 추다 = to dance
춤 = a dance (noun)
추다 = to dance (verb)
In this case, I don’t think you can say “춤을 하다.” You should just say “춤을 춰요” to mean “I dance.”

Similarly to how we put 잘 or 못 right before a verb for the 하다 verbs, we can do the same for verbs like these:

춤을 잘 춰요 = I can dance / I dance well
춤을 못 춰요 = I cannot dance / I dance poorly
Let’s look at another example with the verb 꿈을 꾸다 (to dream)

꿈 = dream (noun)
꾸다 = to dream (action)
꿈을 잘 꿔요 = I dream well
꿈을 못 꿔요 = I cannot dream / I don’t dream well
(Not really sure when you’d say something like this lol. Maybe when you’re describing whether you had a good or bad dream? I just wanted to use this for the sake of showing the grammar lol.)
I think that’s about it for this lesson!