We’ve come to expect something from Cobra Kai season finales, and that is that there will be emotionally meaningful face-offs between rivals and giant brawls that are sort of like karate bukkake. This episode, of course, didn’t disappoint in that respect — the only question was how the writers would make this finale different. Oh, I know. Let’s set this one at Christmas! And let’s have the score be heavy-metal versions of Christmas classics. Yes, nothing gets you in the mood for teens pummeling one another like “Carol of the Bells” played on scratchy electric guitars.
The big fight in this extra-size episode takes place just as Sam and Miguel have brought the Miyagi-Do kids and the Eagle Fang groupies together and told them they have to get along to stop Cobra Kai. After some static, Dimitri gets on their side and starts to draft a prenup deciding on where they will practice, with whom, and what the after-practice snacks will be. (There better be Funny Bones.) But with both the last episode and this one, I was wondering why it seems as though the LaRussos live in a totally different house all of a sudden and why it looks more like the lobby of a Motel 6 by the freeway instead of the roomy, attractive suburban house that it is. Well, that’s because this shit is about to get trashed like Animal House but with roundhouse kicks and dragon punches instead of toga parties and keg stands.
Little nerd Ralph hears some meowing and goes outside to let the cat in just as everyone realizes Sam doesn’t have a cat. He reenters the house via the kitchen window when the Cobras throw him through it and storm the house. “I heard you were throwing a party,” Tory says, entering all tousled hair and thick eye makeup like a WWE Diva. “Hope you don’t mind if we crash.”
All the mini-fights going on in twos and threes are a little hard to follow but badass nonetheless. While some of these dudes were slapping the shit out of one another, I realized I didn’t even know if I’d seen half of them before. That’s fine. Bring in the redshirts. Give us all the karate this shitty soundstage house can possibly handle. That’s when Miguel squares off with the Cobra Kai I’ve taken to calling Slim Jim, but when he calls Miguel “Rhea,” as in “diarrhea,” I finally realized that it’s Trevor, Sam’s stupid boyfriend from season one. I don’t know if it’s the show’s fault for not making that clear or my fault for not noticing, but I feel like either way I have failed you as a recapper and I apologize.
The big fight is happening in the LaRusso dojo, where Vixen Tory is taking on Sam, who is dressed like Tina Fey from the famous SNL “Mom Jeans” sketch. At first, Sam is paralyzed by her fear of Tory, but she eventually gets over it, especially because, if she doesn’t, Tory is going to pummel her face in with a pair of nunchucks. That’s when Sam picks up the bo staff and suddenly it’s Donatello vs. Michelangelo. I’m sorry, but I’ll take Donatello every time in that matchup.
And that’s when the tide starts to turn in all the matchups. Miguel finally gets the karate spirit and clobbers Slim Trevor in the kitchen. Sam turns the tables on Tory, and the Madonna-whore duality is once again restored. As the Cobras are giving Hawk a “free shot” at Dimitri, he runs toward the group, and instead of breaking Dimitri’s arm again, he jump-kicks the Cobras and the two of them come together to tag-team their enemies and reunite as friends. The Cobras finally limp out of the LaRusso home, not entirely defeated but certainly chastened.
Daniel and Amanda have missed all this because they were off at the country-club Christmas party getting cozy with Johnny and his date, Ali. As they sit around getting wine-drunk and the women gossip about all the ways the men have done them wrong, they start to get along once again. “You’re more alike than you want to admit,” says Ali, the lady who has shagged them both. “Maybe you recognized parts of yourself in each other and you don’t really like what you see.” She’s not wrong. They’re both tough guys who want to help kids and do what’s right and are sick of Kreese and Cobra Kai.
As Johnny and Ali end the night, Ali asks about Johnny’s new girl, Carmen, and wants to hear all about her. Instead of making out, as they were about to do at the amusement park, Ali gives him a chaste hug. “I needed this,” he tells her, and she answers, “I did too.” I think Ali is lying. She’s a recent divorcée out with a hot piece of single zaddy. What she really needed was to be thrown down on Johnny’s ratty living-room futon and not leave the house until it was pulverized into his stained carpet. I mean, Johnny and Carmen have boned once. They haven’t had the conversation. Johnny’s D is still fair game, Ali. Don’t give up so easily.
Anyway, when he gets home and goes to see Carmen, he finds out how beat up Miguel is and decides to barge into Cobra Kai in the middle of the night. Seriously, why is everyone always showing up unannounced in the wee hours at this place? Has Kreese figured it out yet? Has he not learned how to lock his doors?
We learn a lot about Kreese in some flashbacks this episode, and, well, his past torment is a lot more insane (and frankly a little more awesome) than I could have imagined. When he was captured by the Viet Cong, the enemy army was making people from his battalion battle to the death on a bamboo bridge over a pit filled with cobras. When his devilish captain, whom I like to call Captain Crunch, is finally selected to fight, Kreese takes another mate’s place to square off with him on the bridge. To give himself an advantage, Captain Crunch tells Kreese that his girlfriend, Betsy, has died in a car crash. Just as Kreese is about to tumble over into the hissing pit of snakes, which looks like something out of Raiders of the Lost Ark, he pulls a piece of bamboo off the bridge and sticks it into Captain Crunch’s leg. He gets it so that CC is hanging off the bridge and is about to meet his fate when the U.S. Army shows up to rescue them. Captain Crunch is like, “It’s over, Kreese. Let me up. That’s an order.”
Kreese is totally sick of this guy’s shit and says, “You’re right. I didn’t follow your orders. I won’t make that mistake again. No mercy.” He kicks him down to get bitten like the eraser on an Adderall addict’s No. 2 pencil during the SAT. That’s how Cobra Kai was born. But the difference between Kreese and Johnny is that Kreese never learned from this experience. He never saw how much it had messed him up and how maybe doing things differently could turn his whole life around. He’s still perpetuating “No Mercy” even though it hasn’t served him well.
When Johnny shows up at Cobra Kai, he sees Robby there and is disappointed, and Kreese asks him to join them once again. “Three generations of Cobra Kai working together: Not only will we dominate the tournament, we’ll melt this whole snowflake generation,” he tells Johnny. You know that appeals to the Fox News dads who are tuning in, but it sounds more like something you’d hear from Emperor Palpatine than out of the mouth of a grown man. And what the heck does dominating the tournament do for them, anyway? It’s not going to get them more money, and we know Cobra Kai as a business is a dubious enterprise. What does Kreese hope to win from all this?
Johnny starts giving Kreese’s body double a lickin’ while Robby stands by and does absolutely nothing. When he finally does intervene, Johnny won’t fight him, but then his instincts kick in and he throws Robby into a set of lockers, knocking him out. There he is, ladies and gentlemen, Johnny Lawrence, father of the century. But Kreese gets an advantage, and just as he’s about to choke Johnny out, Daniel shows up and stops him. Then it’s Daniel’s turn to tussle with the body double (who really looks a lot like Kreese, but they need to invest in a better, grayer wig) until the two of them go through the front window of the dojo, which will probably never get fixed because it’s still unclear if anyone is paying tuition at Cobra Kai.
Kreese comes after Daniel with a shard of glass from the window, and Daniel finally uses his supersecret karate special weapon and paralyzes the limbs of Kreese, a man who has been collecting Social Security benefits for at least a decade. Seriously, Daniel can’t even take out Grandpa Abe over here? Just as he’s about to end it, Sam and Miguel run up, and Daniel can’t be a bad influence in front of the pliable minds of the next generation, whether they wear mom jeans or not.
Daniel tells Kreese to keep Cobra Kai away from their kids. Kreese responds, “It’s a free country.” Seriously, dude, what? That is not what you say in this situation. That’s what you say when someone says, “Hey, would you mind not whistling anymore?” Then you retort, “It’s a free country,” because, yes, whistling is annoying but not illegal. Kreese is trying to “It’s a free country” away the fact that his students broke into someone’s home, destroyed a bunch of property, and tried to kick the shit out of a number of teens. Yes, it’s a free country but not a country so free that you can do that. It’s not like we live in a barren wasteland full of amoral ragamuffins. You know, like Australia.
Kreese then proposes to end this the old-fashioned way: with a tournament. Um, I thought the old-fashioned way was pistols at daybreak, but maybe my fashions are older than yours. This confirms what we already knew, that we’re getting a season four. After all, they can’t just end this on a proposed tournament and never show us the tournament!
That’s not the only mystery we’re left with. Kreese calls up his old Army buddy, the one whose life he saved by taking his shift on the bridge. He’s about to ask him for a favor, but just who is this guy? We’re out of old actors from the Karate Kid movies. Is it the dad of Hilary Swank’s character from Karate Kid III: This Time With a Girl? Or maybe it’s Conor McGregor or, I don’t know, Vince McMahon? I haven’t the faintest clue, but it would be kind of awesome if somehow it turned out to be Michelle Yeoh. She needs to be on this show.
But the episode ends with a message of unity. Yes, Robby stays with Kreese and once again rejects his fathers, both biological and chosen. But we see that Daniel and Johnny are teaching together, merging the Miyagi-Dos and the Eagle Fangs into one fighting unit that will be used for the force of good, and I can’t wait to see them finally kick some ass in a tournament.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]