[{"data":1,"prerenderedAt":243},["ShallowReactive",2],{"course-apputveckling-med-ai-javascript-kurs":3},["Reactive",4],{"exclusiveUserId":5,"language":6,"plan":7,"price":8,"lessonsCount":9,"seoTitle":10,"focusKeyword":11,"description":12,"thumbnail":13,"isPaid":14,"title":15,"id":16,"status":17,"slug":18,"longDescription":19,"seoDescription":20,"tags":21,"color":22,"emoji":23,"duration":24,"level":25,"category":26,"promoVideo":5,"modules":27},"","Svenska","premium",899,28,"Apputveckling Med AI & javaScript Kurs | Lär Mig Koda","apputveckling med ai & javaScript","Vi bygger kommer senare bygga  appar från grunden och visar hur AI kan hjälpa dig att skriva kod, skapa design, lösa problem och utveckla funktioner på ett professionellt sätt.\nDet här får du lära dig:\n- Bygga moderna appar med JavaScript\n- Använda AI för att skriva och förbättra kod\n- Skapa snygga och responsiva användargränssnitt\n- Integrera Firebase för databas och autentisering\n- Med mera","https:\u002F\u002Fi.ibb.co\u002FnqFmCJd7\u002Fthumbnail.jpg",true,"Apputveckling Med AI & JavaScript","c1783606553362","published","apputveckling-med-ai-javascript-kurs","Apputveckling med AI & JavaScript\n\nLär dig utveckla moderna mobilappar med JavaScript och AI – från idé till färdig applikation.\n\nUnder kursen bygger vi riktiga mobilappar där du får lära dig hur AI kan hjälpa dig att utveckla snabbare, skriva bättre kod och skapa professionella lösningar. Du kommer att arbeta med moderna utvecklingsverktyg och lära dig ett arbetsflöde som används av professionella apputvecklare.\n\nVad du kommer att lära dig\n\n🚀 Bygga moderna mobilappar med JavaScript\n\n🤖 Använda AI för att generera, förbättra och felsöka kod\n\n📱 Skapa snygga och responsiva gränssnitt för iOS och Android\n\n-  Integrera Firebase för databas, autentisering och lagring\n\n-  Versionshantera projekt med Git och GitHub\n\n-  Automatisera tester och distribution med GitHub Actions (CI\u002FCD)\n\n-  Testa din mobilapp\n\n- Arbeta med ett professionellt utvecklingsflöde som används i branschen\n\n Du kommer att bygga\n\n* Moderna mobilappar från grunden\n* Inloggning och användarhantering\n* Databas och autentisering med Firebase\n* AI-funktioner som förenklar utvecklingen\n* Automatiska arbetsflöden med GitHub Actions\n* Ett GitHub-repository med professionell projektstruktur\n* En färdig mobilapp som du kan använda i din portfolio\n\nDen här kursen passar både nybörjare och dig som vill ta dina JavaScript-kunskaper till nästa nivå. Du lär dig hur AI, GitHub, GitHub Actions och Firebase används tillsammans för att utveckla moderna mobilappar för både iOS och Android med ett professionellt arbetsflöde.\n","Lär dig Apputveckling Med AI & javaScript Kurs för experter på svenska. En komplett kurs inom frontend full av praktiska övningar och AI-stöd.","frontend, alla nivåer, svenska, programmering, lär mig koda, javascript","bg-gradient-to-br from-[#EC4899] to-[#8B5CF6]","🌐","27 lektioner","Nybörjare","Frontend",[28,55,103,130,156],{"lessons":29,"id":53,"title":54},[30,39,47],{"id":31,"lockType":32,"dripDays":33,"agenda":34,"title":35,"exemptUserIds":36,"unlockDate":5,"type":37,"content":38},"l1784163023756","open",0,"Introduktion\n\nVälkommen till den första lektionen i JavaScript! I den här lektionen kommer du att lära dig grunderna i programmering med JavaScript. Du får en förståelse för hur kommentarer används för att dokumentera kod, hur variabler skapas för att lagra information och vilka datatyper som används för att representera olika typer av data. Dessa kunskaper är grunden för all JavaScript-programmering och kommer att användas genom hela kursen.\n\nEfter denna lektion ska du kunna:\n- Förstå vad JavaScript är och hur det används.\n- Skriva kommentarer i koden.\n- Skapa och använda variabler.\n- Känna till skillnaden mellan let, const och var.\n- Arbeta med de vanligaste datatyperna.\n- Skriva ut information med console.log().\n- Kontrollera datatyper med typeof.","Kommentarer, variabler och datatyper",[],"text","Vad är JavaScript?\n\nJavaScript är ett programmeringsspråk som används för att göra webbplatser interaktiva. Tillsammans med HTML och CSS utgör JavaScript grunden för modern webbutveckling.\n\nMed JavaScript kan du bland annat:\n- Hantera knapptryckningar och formulär.\n- Visa och dölja innehåll.\n- Uppdatera webbsidor utan att ladda om dem.\n- Skapa spel och webbapplikationer.\n- Kommunicera med servrar och API:er.\n\nJavaScript körs direkt i webbläsaren och används även på serversidan med Node.js.\n\nKommentarer\nKommentarer används för att dokumentera och förklara vad koden gör. De körs aldrig av JavaScript utan är endast till för utvecklaren.\n\nEnradskommentar\n\u002F\u002F Detta är en kommentar\n\nFler-raders kommentar\n\u002F*\nDetta är en kommentar\nsom sträcker sig\növer flera rader.\n*\u002F\n\nKommentarer används för att:\n- Förklara kod.\n- Dokumentera funktioner.\n- Göra koden lättare att förstå.\n- Tillfälligt inaktivera kod.\n- Skriva ut text\n\nFör att skriva ut information använder vi funktionen console.log().\n\nconsole.log(\"Hej världen!\");\n\nResultat:\nHej världen!\n\nVariabler\nVariabler används för att lagra information.\nJavaScript har tre sätt att deklarera variabler:\n\n- let namn = \"Anna\";\n\n- const land = \"Sverige\";\n\n- var ålder = 25;\n\nI modern JavaScript används nästan alltid let och const.\nlet - let används när värdet kan ändras senare.\n\nlet poäng = 10;\nconsole.log(poäng);\npoäng = 25;\nconsole.log(poäng);\nResultat:\n10\n25\n\nconst - const används när värdet inte ska ändras.\nconst moms = 25;\nconsole.log(moms);\n\nOm du försöker ändra värdet får du ett fel.\nconst moms = 25;\nmoms = 30;\n\nvar\nvar namn = \"Anna\";\n\nvar -  är den äldre metoden att skapa variabler och bör undvikas i ny kod eftersom den fungerar annorlunda än let och const.\n\nDatatyper\n\nEn datatyp beskriver vilken typ av information en variabel innehåller.\n\nDe vanligaste datatyperna är:\n\nDatatyp\t  Beskrivning\t                Exempel\nString\t  Text\t                                 \"Hej\"\nNumber\t  Heltal och decimaltal\t  100, 15.5\nBoolean\t  Sant eller falskt\t               true, false\nUndefined Variabel utan värde\t    undefined\nNull\t             Tomt värde\t                    null\n\nString - En String används för text.\n\nlet namn = \"Christoffer\";\n\nconsole.log(namn);\n\nNumber - JavaScript använder datatypen Number för både heltal och decimaltal.\n\nlet ålder = 35;\n\nlet pris = 199.95;\n\nconsole.log(ålder);\n\nconsole.log(pris);\n\nBoolean - Boolean används när ett värde endast kan vara sant eller falskt.\n\nlet inloggad = true;\n\nlet admin = false;\n\nconsole.log(inloggad);\n\nUndefined - Om en variabel inte har tilldelats något värde blir den undefined.\n\nlet namn;\nconsole.log(namn);\nResultat:\nundefined\n\nNull-null används när ett värde medvetet saknas.\n\nlet användare = null;\nconsole.log(användare);\n\nKontrollera datatyp - Operatorn typeof används för att kontrollera vilken datatyp en variabel har.\n\nlet namn = \"Anna\";\nconsole.log(typeof namn);\n\nResultat:\nstring\n\nFler exempel:\nconsole.log(typeof 10);\nconsole.log(typeof 15.5);\nconsole.log(typeof true);\nconsole.log(typeof undefined);\nconsole.log(typeof null);\n\nResultat:\nnumber\nnumber\nboolean\nundefined\nobject\n\nObservera att typeof null returnerar object. Detta är ett historiskt beteende i JavaScript.\n\nSammanfoga text-Du kan sammanfoga text med operatorn +.\n\nlet förnamn = \"Anna\";\nlet efternamn = \"Andersson\";\n\nconsole.log(förnamn + \" \" + efternamn);\n\nResultat:\nAnna Andersson\n\nDet moderna sättet är att använda Template Literals.\nlet namn = \"Anna\";\nlet ålder = 30;\nconsole.log(`Jag heter ${namn} och är ${ålder} år.`);\n\nResultat:\nJag heter Anna och är 30 år.\n\nPraktiskt exempel\n\u002F\u002F Personinformation\n\nlet namn = \"Lisa\";\nlet ålder = 27;\nlet stad = \"Göteborg\";\nlet studerar = true;\n\nconsole.log(\"Namn:\", namn);\nconsole.log(\"Ålder:\", ålder);\nconsole.log(\"Stad:\", stad);\nconsole.log(\"Studerar:\", studerar);\n\nResultat:\nNamn: Lisa\nÅlder: 27\nStad: Göteborg\nStuderar: true\nVanliga nybörjarfel\nGlömda citattecken\n\nFel:\nlet namn = Anna;\n\nRätt:\nlet namn = \"Anna\";\n\nFörsöka ändra en const\n\nFel:\nconst pris = 100;\npris = 200;\n\nFelstavade variabelnamn\n\nFel: \nlet namn = \"Anna\";\nconsole.log(namnn);\n\nResultat:\nReferenceError",{"lockType":32,"id":40,"unlockDate":5,"exemptUserIds":41,"title":42,"content":43,"type":44,"dripDays":33,"agenda":45,"duration":46},"l1",[]," Kommentarer, variabler och datatyper","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=iYtfHHftGgM","video","Vad JavaScript är och hur språket fungerar.\nSkriva kommentarer för att dokumentera och förklara din kod.\nSkapa variabler med let, const och var.\nFörstå när du ska använda olika typer av variabler.\nArbeta med de vanligaste datatyperna:\nString (text)\nNumber (tal)\nBoolean (true\u002Ffalse)\nSkriva och köra dina första JavaScript-program.\n\nEfter lektionen kommer du att kunna:\n- Skriva enkla JavaScript-program.\n- Skapa och använda variabler.\n- Förstå skillnaden mellan olika datatyper.\n- Läsa och skriva kod med kommentarer på ett tydligt och professionellt sätt.\nDen här lektionen lägger grunden för resten av kursen och är viktig för att du ska kunna bygga moderna webb- och mobilapplikationer med JavaScript.","Ca 60 Min",{"type":48,"content":49,"title":35,"exemptUserIds":50,"unlockDate":5,"agenda":51,"dripDays":33,"lockType":32,"id":52},"quiz","quiz-1784007623356",[],"Under lektionen kommer vi att:.\nSäkerställa att JavaScript-miljön är korrekt.\nGå igenom hur kursen är upplagd och hur lektionerna kommer att genomföras.\nLära oss vad kommentarer är och varför de används.\nSkapa variabler med let, const och var.\nFörstå de vanligaste datatyperna i JavaScript.\nSkriva och testa våra första JavaScript-program.","l1783634438291","m1","Introduktion",{"id":56,"lessons":57,"title":64},"m1783673618686",[58,67,74,84,91,98],{"agenda":5,"dripDays":59,"content":60,"type":37,"unlockDate":5,"exemptUserIds":61,"title":64,"id":65,"lockType":66},7,"Kontrollflöden, While och For-loopar och hur man kommunicerar med datorn\n\nIntroduktion\n\nKontrollflöden är en av de viktigaste delarna inom programmering. Kontrollflöden bestämmer i vilken ordning instruktionerna i ett program ska köras och gör det möjligt för programmet att fatta beslut, upprepa uppgifter och reagera på olika situationer.\n\nMed JavaScript kan vi skapa program som inte bara kör kod rad för rad, utan även kan anpassa sig efter information från användaren eller olika villkor.\n\nI denna lektion lär du dig:\n\nHur JavaScript kommunicerar med datorn.\nHur kontrollflöden fungerar.\nHur man använder villkor.\nHur While-loopar fungerar.\nHur For-loopar fungerar.\nHur man skapar program som upprepar uppgifter automatiskt.\nHur man styr loopar med break och continue.\n\nHur kommunicerar JavaScript med datorn?\n\nEtt program består av instruktioner som datorn följer. JavaScript kommunicerar med datorn genom att skicka kommandon.\n\nNär datorn kör JavaScript-kod läser den instruktionerna uppifrån och ner.\n\nExempel:\n\nconsole.log(\"Startar programmet\");\n\nconsole.log(\"Programmet körs\");\n\nResultat:\n\nStartar programmet\n\nProgrammet körs\n\nVarje kodrad är en instruktion som datorn utför.\n\nconsole.log()\n\nconsole.log() används för att skriva ut information i webbläsarens konsol.\n\nExempel:\n\nconsole.log(\"Hej världen!\");\n\nResultat:\n\nHej världen!\n\nDet används ofta för:\n\nTesta kod.\nVisa information.\nFelsöka program.\nKontrollera värden i variabler.\n\nExempel:\n\nlet namn = \"Anna\";\n\nconsole.log(namn);\n\nResultat:\n\nAnna\n\nAnvändarinput med prompt()\n\nFör att låta användaren kommunicera med programmet kan vi använda prompt().\n\nExempel:\n\nlet namn = prompt(\"Vad heter du?\");\n\nconsole.log(\"Hej \" + namn);\n\nOm användaren skriver:\n\nAnna\n\nResultat:\n\nHej Anna\n\nKontrollflöden\n\nKontrollflöden bestämmer hur programmet ska agera beroende på olika situationer.\n\nEtt program kan till exempel fråga:\n\nÄr användaren inloggad?\nÄr lösenordet korrekt?\nÄr temperaturen hög?\nFinns det produkter i lager?\n\nBeroende på svaret kör programmet olika kod.\n\nif-sats\n\nEn if-sats används för att skapa beslut.\n\nSyntax:\n\nif (villkor) {\n\nkod som körs om villkoret är sant\n\n}\n\nExempel:\n\nlet ålder = 20;\n\nif (ålder >= 18) {\n\nconsole.log(\"Du är myndig\");\n\n}\n\nResultat:\n\nDu är myndig\n\nif och else\n\nMed else kan vi ange vad som händer om villkoret inte stämmer.\n\nExempel:\n\nlet ålder = 15;\n\nif (ålder >= 18) {\n\nconsole.log(\"Du får köpa biljetten\");\n\n}\n\nelse {\n\nconsole.log(\"Du är för ung\");\n\n}\n\nResultat:\n\nDu är för ung\n\nelse if\n\nNär vi har flera olika alternativ använder vi else if.\n\nExempel:\n\nlet poäng = 80;\n\nif (poäng >= 90) {\n\nconsole.log(\"Betyg A\");\n\n}\n\nelse if (poäng >= 70) {\n\nconsole.log(\"Betyg B\");\n\n}\n\nelse {\n\nconsole.log(\"Betyg C\");\n\n}\n\nResultat:\n\nBetyg B\n\nVad är en loop?\n\nEn loop används för att upprepa kod flera gånger.\n\nIstället för att skriva samma kod flera gånger kan vi låta datorn upprepa arbetet automatiskt.\n\nExempel utan loop:\n\nconsole.log(\"Nummer 1\");\n\nconsole.log(\"Nummer 2\");\n\nconsole.log(\"Nummer 3\");\n\nMed en loop:\n\nfor (let nummer = 1; nummer \u003C= 3; nummer++) {\n\nconsole.log(\"Nummer \" + nummer);\n\n}\n\nResultat:\n\nNummer 1\n\nNummer 2\n\nNummer 3\n\nWhile-loop\n\nEn While-loop kör kod så länge ett villkor är sant.\n\nSyntax:\n\nwhile (villkor) {\n\nkod som ska upprepas\n\n}\n\nExempel:\n\nlet nummer = 1;\n\nwhile (nummer \u003C= 5) {\n\nconsole.log(nummer);\n\nnummer++;\n\n}\n\nResultat:\n\n1\n\n2\n\n3\n\n4\n\n5\n\nHur fungerar en While-loop?\n\nProgrammet gör följande:\n\nKontrollerar villkoret.\nOm villkoret är sant körs koden.\nVärdet ändras.\nProgrammet kontrollerar villkoret igen.\nLoopen fortsätter tills villkoret blir falskt.\n\nExempel med användare\n\nVi kan använda en loop för att fråga användaren flera gånger.\n\nExempel:\n\nlet lösenord = \"\";\n\nwhile (lösenord !== \"1234\") {\n\nlösenord = prompt(\"Skriv lösenord:\");\n\n}\n\nconsole.log(\"Rätt lösenord!\");\n\nProgrammet fortsätter fråga tills användaren skriver rätt lösenord.\n\nFor-loop\n\nEn For-loop används när vi vet hur många gånger något ska upprepas.\n\nSyntax:\n\nfor (start; villkor; förändring) {\n\nkod\n\n}\n\nExempel:\n\nfor (let i = 1; i \u003C= 5; i++) {\n\nconsole.log(i);\n\n}\n\nResultat:\n\n1\n\n2\n\n3\n\n4\n\n5\n\nHur fungerar en For-loop?\n\nEn for-loop består av tre delar:\n\nStartvärde\n\nlet i = 1\n\nBestämmer var loopen börjar.\n\nVillkor\n\ni \u003C= 5\n\nBestämmer när loopen ska fortsätta.\n\nFörändring\n\ni++\n\nÖkar värdet efter varje varv.\n\nRäkna bakåt med For-loop\n\nExempel:\n\nfor (let i = 5; i >= 1; i--) {\n\nconsole.log(i);\n\n}\n\nResultat:\n\n5\n\n4\n\n3\n\n2\n\n1\n\nSkillnaden mellan While och For-loop\n\nWhile-loop:\n\nAnvänd när du inte vet exakt hur många gånger något ska köras.\n\nExempel:\n\nVänta tills användaren skriver rätt lösenord.\nKör tills ett villkor ändras.\nFortsätt tills en uppgift är klar.\n\nFor-loop:\n\nAnvänd när du vet antal upprepningar.\n\nExempel:\n\nVisa 10 produkter.\nGå igenom en lista.\nRäkna från 1 till 100.\n\nbreak\n\nbreak används för att stoppa en loop direkt.\n\nExempel:\n\nfor (let i = 1; i \u003C= 10; i++) {\n\nif (i === 5) {\n\nbreak;\n\n}\n\nconsole.log(i);\n\n}\n\nResultat:\n\n1\n\n2\n\n3\n\n4\n\ncontinue\n\ncontinue används för att hoppa över ett varv i loopen.\n\nExempel:\n\nfor (let i = 1; i \u003C= 5; i++) {\n\nif (i === 3) {\n\ncontinue;\n\n}\n\nconsole.log(i);\n\n}\n\nResultat:\n\n1\n\n2\n\n4\n\n5\n\nPraktiskt exempel – Enkel meny\n\nlet val = prompt(\"Välj alternativ: 1 eller 2\");\n\nif (val === \"1\") {\n\nconsole.log(\"Du valde alternativ 1\");\n\n}\n\nelse if (val === \"2\") {\n\nconsole.log(\"Du valde alternativ 2\");\n\n}\n\nelse {\n\nconsole.log(\"Fel val\");\n\n}\n\nPraktiskt exempel – Räkna antal försök\n\nlet försök = 0;\n\nwhile (försök \u003C 3) {\n\nconsole.log(\"Försök nummer: \" + försök);\n\nförsök++;\n\n}\n\nResultat:\n\nFörsök nummer: 0\n\nFörsök nummer: 1\n\nFörsök nummer: 2\n\nVanliga nybörjarfel\n\nGlömmer att ändra värdet i en While-loop\n\nFel:\n\nlet nummer = 1;\n\nwhile (nummer \u003C= 5) {\n\nconsole.log(nummer);\n\n}\n\nProblemet är att nummer aldrig ändras och loopen fortsätter för alltid.\n\nRätt:\n\nlet nummer = 1;\n\nwhile (nummer \u003C= 5) {\n\nconsole.log(nummer);\n\nnummer++;\n\n}\n\nFel villkor\n\nFel:\n\nfor (let i = 1; i >= 5; i++) {\n\nconsole.log(i);\n\n}\n\nLoopen körs aldrig eftersom villkoret är falskt från början.\n\nAnvänder fel operator\n\nFel:\n\nif (ålder = 18)\n\nRätt:\n\nif (ålder === 18)",[62,63],"CwlDgSHu6DVKqsB0q0jSAFVFUxK2","EsIzfk27IkSmRcD5CCsHoIoRlna2","Kontrollflöden,  While och For loopar och hur man kommunicerar med datorn","l1784164256395","drip",{"lockType":66,"id":68,"content":69,"type":44,"unlockDate":5,"title":70,"exemptUserIds":71,"agenda":72,"duration":73,"dripDays":59},"l1783673893539","https:\u002F\u002Fyoutu.be\u002FlyCCMsNjSo4","Kontrollflöden logik och hur man kommunicerar med datorn",[62,63],"Förstå hur datorn tänker med hjälp av logik.\nAnvända if, else if och else.\nKommunicera med användaren med prompt().\nSkriva ut information i konsolen med console.log().\nTa emot och hantera användarens inmatning.\nBygga små interaktiva program med beslut och användarinmatning.\n\nEfter lektionen kommer du att kunna:\n\nSkapa program som kan fatta beslut.\nAnvända villkorssatser för att styra programmets beteende.\nTa emot information från användaren med prompt().\nVisa resultat med alert() och console.log().\nFörstå hur logik används i riktiga applikationer.","Ca 53 Min",{"id":75,"starterCode":76,"lockType":66,"solution":77,"dripDays":59,"agenda":78,"title":79,"exemptUserIds":80,"unlockDate":5,"type":82,"content":83},"l1783688955628","\u002F\u002F Skriv en kommentar som beskriver programmet\n\nlet name = \"\";\nlet age = 0;\n\n\u002F\u002F Skriv din if\u002Felse-kod här","\u002F\u002F Detta program kontrollerar om en person är myndig.\n\nlet name = \"Anna\";\nlet age = 20;\n\nif (age >= 18) {\n    console.log(name + \" är myndig.\");\n} else {\n    console.log(name + \" är inte myndig.\");\n}","I den här koduppgiften får du öva på några av de viktigaste grunderna i JavaScript. Du kommer att skriva kommentarer för att dokumentera din kod, skapa variabler med let och använda en if- och else-sats för att fatta beslut. När du är klar ska programmet kunna avgöra om en person är myndig och skriva ut rätt meddelande i konsolen.\nDu tränar på:\nSkriva kommentarer (\u002F\u002F)\nSkapa variabler med let\nArbeta med datatyper (String och Number)\nAnvända if och else\nSkriva ut resultat med console.log()\nDet här är en bra första övning som hjälper eleverna att kombinera flera grundläggande JavaScript-koncept i ett och samma program.","Kontrollflöden",[62,81,63],"fVYZ6noQsiMGQsnGfaIj5WBrVeB2","code","1. Skriva en kommentar som beskriver vad programmet gör.\n2. Skapa en variabel med let som innehåller ett namn.\n3. Skapa en variabel med let som innehåller en ålder.\n4. Använd en if- och else-sats för att kontrollera om personen är 18 år eller äldre.\n5. Skriv ut ett meddelande med console.log() som visar resultatet.",{"dripDays":59,"duration":85,"agenda":86,"title":87,"exemptUserIds":88,"unlockDate":5,"type":44,"content":89,"id":90,"lockType":66},"Ca 54 Min","I denna lektion får du en introduktion till kursens upplägg och lär dig grunderna inom Python, QA och testautomation.\n\nVi går igenom hur professionella utvecklingsteam arbetar med kvalitetssäkring och varför automatiserade tester är en viktig del av modern mjukvaruutveckling.\n\nUnder lektionen kommer vi att gå igenom:\n\n- Introduktion till QA (Quality Assurance) och rollen som testare\n- Vad testautomation är och varför företag använder automatiserade tester\n- Genomgång av kursens verktyg och arbetsmetoder\n- Installation och konfigurering av utvecklingsmiljö (Python, PyCharm och nödvändiga bibliotek)\n- Introduktion till Python och hur språket används inom testautomation\n- Genomgång av kursprojektet och vad vi kommer att bygga under kursens gång\n\nEfter lektionen kommer du att förstå hur kursen är uppbyggd, vilka verktyg som används och hur Python kan användas för att skapa professionella automatiserade tester.\n\nMålet med lektionen:\nAtt ge dig en tydlig bild av testautomationens värld och skapa en stabil grund inför resten av kursen.","Repetetion av kontrollflöder och nytt om For Loopar",[62,63],"https:\u002F\u002Fyoutu.be\u002FHmdlDMa7U7M","l1783689666387",{"lockType":66,"id":92,"content":93,"type":44,"unlockDate":5,"exemptUserIds":94,"title":95,"agenda":96,"duration":97,"dripDays":59},"l1783689998703","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=V1SBwQFi9Xs",[62,63],"While - loopar, kontrollflöden , prompt","I denna lektion lär du dig hur JavaScript kan styra programmets flöde genom kontrollstrukturer, while-loopar och användarinteraktion med prompt. Du kommer att förstå hur program kan fatta beslut, upprepa kod och ta emot information från användaren.\n\nUnder lektionen kommer vi att gå igenom:\n\n- Vad kontrollflöden innebär och hur program bestämmer vilken kod som ska köras\n- Hur villkor används för att skapa logik med if och else\n- Introduktion till while-loopar och när de används\n- Hur en while-loop fungerar och hur man styr när loopen ska avslutas\n- Hur man undviker oändliga loopar och vanliga fel vid användning av loopar\n- Användning av prompt() för att hämta information från användaren\n- Hur användardata från prompt() kan användas tillsammans med villkor och loopar\n- Praktiska övningar där vi bygger interaktiva JavaScript-program\n\nEfter lektionen kommer du kunna skapa program som reagerar på användarens input, utför upprepade uppgifter och använder kontrollflöden för att styra programmets beteende.\n\nMålet med lektionen:\nAtt förstå hur JavaScript använder kontrollflöden, while-loopar och prompt() för att skapa interaktiva och dynamiska applikationer.","Ca 58 Min",{"agenda":5,"dripDays":59,"content":99,"type":48,"unlockDate":5,"exemptUserIds":100,"title":101,"id":102,"lockType":66},"quiz-1784075878897",[62,63],"Kontrollflöden,  While och For loopar","l1784076056593",{"title":104,"id":105,"lessons":106},"Funktioner och Objekt och Array","m1783691963620",[107,112,119,126],{"exemptUserIds":108,"title":104,"unlockDate":5,"type":37,"content":109,"dripDays":110,"agenda":5,"lockType":66,"id":111},[62,63],"Funktioner, Objekt och Arrayer\n\nIntroduktion\n\nFunktioner, objekt och arrayer är tre av de viktigaste byggstenarna i JavaScript. Med hjälp av dessa kan vi skapa mer organiserad, återanvändbar och effektiv kod.\n\nFunktioner används för att samla kod som ska utföra en specifik uppgift. Objekt används för att samla information och egenskaper om något. Arrayer används för att lagra flera värden i en lista.\n\nI denna lektion lär du dig:\n\nVad funktioner är och varför de används.\nHur man skapar och anropar funktioner.\nHur funktioner kan ta emot information.\nHur funktioner kan returnera värden.\nVad objekt är och hur de fungerar.\nHur man skapar och använder objekt.\nVad arrayer är.\nHur man arbetar med listor av information.\nHur man kombinerar funktioner, objekt och arrayer.\n\nFunktioner\n\nEn funktion är ett kodblock som utför en specifik uppgift.\n\nIstället för att skriva samma kod flera gånger kan vi skapa en funktion och återanvända den.\n\nEn funktion kan:\n\nTa emot information.\nBearbeta information.\nReturnera ett resultat.\n\nSkapa en funktion\n\nSyntax:\n\nfunction namn() {\n\nkod som ska köras\n\n}\n\nExempel:\n\nfunction hälsa() {\n\nconsole.log(\"Hej världen!\");\n\n}\n\nFunktionen körs inte automatiskt. Vi måste anropa den.\n\nExempel:\n\nhälsa();\n\nResultat:\n\nHej världen!\n\nVarför använda funktioner?\n\nFunktioner gör koden:\n\nLättare att läsa.\nEnklare att felsöka.\nMer organiserad.\nÅteranvändbar.\n\nFunktion med parametrar\n\nParametrar gör att vi kan skicka information till en funktion.\n\nExempel:\n\nfunction hälsa(namn) {\n\nconsole.log(\"Hej \" + namn);\n\n}\n\nAnropa funktionen:\n\nhälsa(\"Anna\");\n\nResultat:\n\nHej Anna\n\nFlera parametrar\n\nEn funktion kan ta emot flera värden.\n\nExempel:\n\nfunction presentera(namn, ålder) {\n\nconsole.log(\"Jag heter \" + namn + \" och är \" + ålder + \" år.\");\n\n}\n\nAnropa funktionen:\n\npresentera(\"Erik\", 30);\n\nResultat:\n\nJag heter Erik och är 30 år.\n\nReturnera värden\n\nEn funktion kan returnera ett värde med return.\n\nExempel:\n\nfunction addera(a, b) {\n\nreturn a + b;\n\n}\n\nAnvänd funktionen:\n\nlet resultat = addera(5, 3);\n\nconsole.log(resultat);\n\nResultat:\n\n8\n\nFunktioner med return används när vi vill spara eller använda resultatet senare.\n\nArrow Functions\n\nModern JavaScript använder ofta så kallade arrow functions.\n\nVanlig funktion:\n\nfunction hälsa() {\n\nconsole.log(\"Hej\");\n\n}\n\nArrow function:\n\nconst hälsa = () => {\n\nconsole.log(\"Hej\");\n\n};\n\nExempel med parameter:\n\nconst dubbla = (nummer) => {\n\nreturn nummer * 2;\n\n};\n\nconsole.log(dubbla(5));\n\nResultat:\n\n10\n\nObjekt\n\nEtt objekt används för att lagra information om något.\n\nEtt objekt består av egenskaper och värden.\n\nExempel:\n\nlet person = {\n\nnamn: \"Anna\",\n\nålder: 25,\n\nstad: \"Stockholm\"\n\n};\n\nEtt objekt kan beskriva en person, produkt, bil eller nästan vad som helst.\n\nHämta information från objekt\n\nVi använder punktnotation för att komma åt egenskaper.\n\nExempel:\n\nconsole.log(person.namn);\n\nResultat:\n\nAnna\n\nFler exempel:\n\nconsole.log(person.ålder);\n\nconsole.log(person.stad);\n\nResultat:\n\n25\n\nStockholm\n\nÄndra värden i objekt\n\nObjekt kan ändras efter att de skapats.\n\nExempel:\n\nlet person = {\n\nnamn: \"Anna\",\n\nålder: 25\n\n};\n\nperson.ålder = 26;\n\nconsole.log(person.ålder);\n\nResultat:\n\n26\n\nLägga till nya egenskaper\n\nVi kan lägga till nya egenskaper.\n\nExempel:\n\nperson.email = \"anna@email.com\";\n\nObjekt med funktioner\n\nObjekt kan även innehålla funktioner. Dessa kallas metoder.\n\nExempel:\n\nlet person = {\n\nnamn: \"Anna\",\n\nhälsa: function() {\n\nconsole.log(\"Hej!\");\n\n}\n\n};\n\nAnropa metoden:\n\nperson.hälsa();\n\nResultat:\n\nHej!\n\nArrayer\n\nEn array används för att lagra flera värden i en lista.\n\nExempel:\n\nlet frukter = [\n\n\"Äpple\",\n\n\"Banan\",\n\n\"Apelsin\"\n\n];\n\nEn array kan innehålla flera olika värden.\n\nHämta värden från en array\n\nVarje värde i en array har en position som kallas index.\n\nIndex börjar alltid på 0.\n\nExempel:\n\nlet frukter = [\n\n\"Äpple\",\n\n\"Banan\",\n\n\"Apelsin\"\n\n];\n\nconsole.log(frukter[0]);\n\nResultat:\n\nÄpple\n\nExempel:\n\nconsole.log(frukter[1]);\n\nResultat:\n\nBanan\n\nÄndra värden i en array\n\nVi kan ändra ett värde genom att använda index.\n\nExempel:\n\nlet färger = [\n\n\"Röd\",\n\n\"Blå\",\n\n\"Grön\"\n\n];\n\nfärger[1] = \"Gul\";\n\nconsole.log(färger);\n\nResultat:\n\nRöd\n\nGul\n\nGrön\n\nLägga till värden i en array\n\nMed push() lägger vi till ett nytt värde sist i listan.\n\nExempel:\n\nlet djur = [\n\n\"Hund\",\n\n\"Katt\"\n\n];\n\ndjur.push(\"Häst\");\n\nconsole.log(djur);\n\nResultat:\n\nHund\n\nKatt\n\nHäst\n\nTa bort värden från en array\n\nMed pop() tar vi bort det sista värdet.\n\nExempel:\n\nlet färger = [\n\n\"Röd\",\n\n\"Blå\",\n\n\"Grön\"\n\n];\n\nfärger.pop();\n\nconsole.log(färger);\n\nResultat:\n\nRöd\n\nBlå\n\nArray length\n\nlength visar hur många element en array innehåller.\n\nExempel:\n\nlet bilar = [\n\n\"BMW\",\n\n\"Volvo\",\n\n\"Audi\"\n\n];\n\nconsole.log(bilar.length);\n\nResultat:\n\n3\n\nLoopar och arrayer\n\nArrayer används ofta tillsammans med loopar.\n\nExempel:\n\nlet frukter = [\n\n\"Äpple\",\n\n\"Banan\",\n\n\"Apelsin\"\n\n];\n\nfor (let i = 0; i \u003C frukter.length; i++) {\n\nconsole.log(frukter[i]);\n\n}\n\nResultat:\n\nÄpple\n\nBanan\n\nApelsin\n\nArray-metoden forEach()\n\nEtt modernare sätt att gå igenom en array är med forEach().\n\nExempel:\n\nlet namn = [\n\n\"Anna\",\n\n\"Erik\",\n\n\"Lisa\"\n\n];\n\nnamn.forEach(function(person) {\n\nconsole.log(person);\n\n});\n\nResultat:\n\nAnna\n\nErik\n\nLisa\n\nObjekt i arrayer\n\nVi kan lagra objekt i arrayer.\n\nExempel:\n\nlet personer = [\n\n{\n\nnamn: \"Anna\",\n\nålder: 25\n\n},\n\n{\n\nnamn: \"Erik\",\n\nålder: 30\n\n}\n\n];\n\nHämta information:\n\nconsole.log(personer[0].namn);\n\nResultat:\n\nAnna\n\nPraktiskt exempel – Produktlista\n\nlet produkter = [\n\n{\n\nnamn: \"Laptop\",\n\npris: 9000\n\n},\n\n{\n\nnamn: \"Mus\",\n\npris: 300\n\n}\n\n];\n\nprodukter.forEach(function(produkt) {\n\nconsole.log(produkt.namn + \" kostar \" + produkt.pris + \" kr\");\n\n});\n\nResultat:\n\nLaptop kostar 9000 kr\n\nMus kostar 300 kr\n\nKombinera funktioner, objekt och arrayer\n\nI riktiga program används funktioner, objekt och arrayer ofta tillsammans.\n\nExempel:\n\nlet användare = [\n\n{\n\nnamn: \"Anna\",\n\nålder: 25\n\n},\n\n{\n\nnamn: \"Erik\",\n\nålder: 30\n\n}\n\n];\n\nfunction visaAnvändare(lista) {\n\nlista.forEach(function(person) {\n\nconsole.log(person.namn);\n\n});\n\n}\n\nvisaAnvändare(användare);\n\nResultat:\n\nAnna\n\nErik\n\nVanliga nybörjarfel\n\nGlömmer att anropa funktionen\n\nFel:\n\nfunction hälsa() {\n\nconsole.log(\"Hej\");\n\n}\n\nFunktionen körs aldrig.\n\nRätt:\n\nhälsa();\n\nFel index i array\n\nFel:\n\nlet namn = [\"Anna\", \"Erik\"];\n\nconsole.log(namn[2]);\n\nResultat:\n\nundefined\n\nRätt:\n\nconsole.log(namn[0]);\n\nGlömmer komma i objekt\n\nFel:\n\nlet person = {\n\nnamn: \"Anna\"\n\nålder: 25\n\n};\n\nRätt:\n\nlet person = {\n\nnamn: \"Anna\",\n\nålder: 25\n\n};\n\nFörsöker använda en egenskap som inte finns\n\nFel:\n\nlet person = {\n\nnamn: \"Anna\"\n\n};\n\nconsole.log(person.adress);\n\nResultat:\n\nundefined",14,"l1784164531275",{"lockType":66,"id":113,"content":114,"type":44,"unlockDate":5,"title":115,"exemptUserIds":116,"agenda":117,"duration":118,"dripDays":110},"l1783691976635","https:\u002F\u002Fyoutu.be\u002FoTVPDWVrMiw","Funktioner",[62,63],"I denna lektion lär du dig hur funktioner fungerar i JavaScript och varför de är en viktig del av att skriva strukturerad, återanvändbar och effektiv kod. Funktioner gör det möjligt att dela upp program i mindre delar och skapa tydligare applikationer.\n\nUnder lektionen kommer vi att gå igenom:\n\n- Vad funktioner är och varför de används\n-  Hur man skapar och anropar funktioner i JavaScript\n- Skillnaden mellan funktioner med och utan parametrar\n-  Hur argument skickas till funktioner\n-  Hur funktioner kan returnera värden med return\n-  Hur funktioner hjälper till att organisera större program\n-  Praktiska exempel där vi bygger egna funktioner för att lösa programmeringsproblem\n\nEfter lektionen kommer du kunna skapa egna funktioner, återanvända kod och bygga mer strukturerade JavaScript-applikationer.","Ca 58 min",{"dripDays":110,"duration":120,"agenda":121,"exemptUserIds":122,"title":123,"unlockDate":5,"type":44,"content":124,"id":125,"lockType":66},"Ca 64 Min","I denna lektion lär du dig hur objekt, arrayer och funktioner fungerar tillsammans i JavaScript. Dessa är grundläggande byggstenar för att kunna hantera data och skapa mer avancerade applikationer, inklusive AI-drivna applikationer.\n\nUnder lektionen kommer vi att gå igenom:\n\n- Vad objekt är och hur de används för att lagra strukturerad information\n- Skapa och arbeta med objekt i JavaScript\n- Hur man hämtar och ändrar information i objekt\n- Vad arrayer är och hur de används för att lagra flera värden\n- Skapa, ändra och läsa data från arrayer\n- Kombinera objekt och arrayer för att skapa mer avancerade datastrukturer\n- Använda funktioner tillsammans med objekt och arrayer\n- Skapa återanvändbar kod för att bearbeta och hantera data\n- Praktiska övningar där vi bygger program som hanterar information\n\nEfter lektionen kommer du kunna strukturera data med objekt och arrayer samt använda funktioner för att skapa mer organiserade och dynamiska JavaScript-program.\n\nMålet med lektionen:\nAtt förstå hur objekt, arrayer och funktioner används tillsammans för att bygga grunden till moderna JavaScript-applikationer.\n\nFörkunskaper: Variabler, datatyper och kontrollflöden.",[62,63],"Objekt och Array och Funktioner","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gp2jQTLcGag","l1783692257902",{"lockType":66,"id":127,"type":48,"content":128,"title":104,"exemptUserIds":129,"unlockDate":5,"agenda":5,"dripDays":110},"l1784076365856","quiz-1784076111673",[62,63],{"id":131,"lessons":132,"title":155},"m1783692410805",[133,139,145,151],{"lockType":66,"id":134,"unlockDate":5,"title":135,"exemptUserIds":136,"content":137,"type":37,"dripDays":138,"agenda":5},"l1784164641773","JavaScript Classer & Arv och Flutter",[62,63],"JavaScript Klasser & Arv och Flutter\n\nIntroduktion\n\nKlasser och arv är viktiga delar av objektorienterad programmering (OOP). Med hjälp av klasser kan vi skapa strukturerad och återanvändbar kod där objekt kan dela egenskaper och funktioner.\n\nJavaScript använder klasser för att skapa objekt på ett tydligare och mer organiserat sätt. Arv gör det möjligt för en klass att ta över egenskaper och funktioner från en annan klass.\n\nFlutter är ett modernt ramverk från Google som används för att skapa mobilapplikationer, webbapplikationer och desktopapplikationer från samma kodbas. Flutter använder programmeringsspråket Dart, som också bygger mycket på objektorienterad programmering.\n\nI denna lektion lär du dig:\n\nVad klasser är i JavaScript.\nHur man skapar objekt med klasser.\nVad konstruktörer är.\nHur metoder fungerar i klasser.\nVad arv betyder inom programmering.\nHur en klass kan ärva från en annan klass.\nIntroduktion till Flutter.\nSkillnaden mellan JavaScript och Flutter.\nHur objektorienterad programmering används i moderna applikationer.\n\nVad är objektorienterad programmering?\n\nObjektorienterad programmering (OOP) är ett sätt att organisera kod genom att skapa objekt som representerar saker i verkligheten.\n\nExempel på objekt:\n\nEn användare.\nEn produkt.\nEn bil.\nEtt konto.\nEn spelkaraktär.\n\nEtt objekt innehåller:\n\nEgenskaper (data).\nMetoder (funktioner).\n\nExempel:\n\nEn bil kan ha:\n\nEgenskaper:\n\nFärg.\nModell.\nHastighet.\n\nMetoder:\n\nStarta.\nBromsa.\nAccelerera.\n\nKlasser i JavaScript\n\nEn klass är en mall för att skapa objekt.\n\nMan kan tänka på en klass som en ritning.\n\nKlassen beskriver hur objektet ska se ut och fungera.\n\nSyntax:\n\nclass KlassNamn {\n\n}\n\nExempel:\n\nclass Person {\n\n}\n\nSkapa objekt från en klass\n\nFör att skapa ett objekt från en klass använder vi new.\n\nExempel:\n\nclass Person {\n\n}\n\nlet person1 = new Person();\n\nNu har vi skapat ett objekt från klassen Person.\n\nConstructor\n\nEn constructor körs automatiskt när ett nytt objekt skapas.\n\nDen används för att ge objektet startvärden.\n\nExempel:\n\nclass Person {\n\nconstructor(namn, ålder) {\n\nthis.namn = namn;\n\nthis.ålder = ålder;\n\n}\n\n}\n\nSkapa objekt:\n\nlet person1 = new Person(\"Anna\", 25);\n\nHämta information:\n\nconsole.log(person1.namn);\n\nconsole.log(person1.ålder);\n\nResultat:\n\nAnna\n\n25\n\nVad betyder this?\n\nthis betyder det aktuella objektet.\n\nExempel:\n\nclass Person {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\n}\n\nNär vi skapar:\n\nlet person = new Person(\"Erik\");\n\nblir:\n\nperson.namn = \"Erik\";\n\nMetoder i klasser\n\nEn metod är en funktion som tillhör en klass.\n\nExempel:\n\nclass Person {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\nhälsa() {\n\nconsole.log(\"Hej, jag heter \" + this.namn);\n\n}\n\n}\n\nSkapa objekt:\n\nlet person = new Person(\"Anna\");\n\nAnropa metoden:\n\nperson.hälsa();\n\nResultat:\n\nHej, jag heter Anna\n\nFlera objekt från samma klass\n\nEn klass kan skapa många olika objekt.\n\nExempel:\n\nclass Bil {\n\nconstructor(märke, färg) {\n\nthis.märke = märke;\n\nthis.färg = färg;\n\n}\n\n}\n\nlet bil1 = new Bil(\"Volvo\", \"Blå\");\n\nlet bil2 = new Bil(\"BMW\", \"Svart\");\n\nconsole.log(bil1.märke);\n\nconsole.log(bil2.märke);\n\nResultat:\n\nVolvo\n\nBMW\n\nArv (Inheritance)\n\nArv betyder att en klass kan ta över egenskaper och metoder från en annan klass.\n\nDet gör att vi kan återanvända kod.\n\nExempel:\n\nEn grundklass:\n\nPerson\n\nUnderklasser:\n\nStudent\n\nLärare\n\nStudent och Lärare kan ärva information från Person.\n\nSkapa en basklass\n\nclass Person {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\nhälsa() {\n\nconsole.log(\"Hej \" + this.namn);\n\n}\n\n}\n\nSkapa en klass som ärver\n\nclass Student extends Person {\n\n}\n\nNu ärver Student alla egenskaper och metoder från Person.\n\nAnvända arv\n\nExempel:\n\nclass Person {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\nhälsa() {\n\nconsole.log(\"Hej \" + this.namn);\n\n}\n\n}\n\nclass Student extends Person {\n\n}\n\nlet student = new Student(\"Anna\");\n\nstudent.hälsa();\n\nResultat:\n\nHej Anna\n\nLägga till egna egenskaper\n\nEn underklass kan ha egna funktioner.\n\nExempel:\n\nclass Student extends Person {\n\nconstructor(namn, kurs) {\n\nsuper(namn);\n\nthis.kurs = kurs;\n\n}\n\n}\n\nsuper() används för att kalla på konstruktorn från föräldraklassen.\n\nSkapa objekt:\n\nlet student = new Student(\"Anna\", \"JavaScript\");\n\nconsole.log(student.namn);\n\nconsole.log(student.kurs);\n\nResultat:\n\nAnna\n\nJavaScript\n\nÖverskrida metoder\n\nEn klass kan ändra en metod som finns i föräldraklassen.\n\nExempel:\n\nclass Person {\n\nhälsa() {\n\nconsole.log(\"Hej\");\n\n}\n\n}\n\nclass Student extends Person {\n\nhälsa() {\n\nconsole.log(\"Hej, jag studerar JavaScript\");\n\n}\n\n}\n\nlet student = new Student();\n\nstudent.hälsa();\n\nResultat:\n\nHej, jag studerar JavaScript\n\nPrivata egenskaper\n\nJavaScript stödjer privata egenskaper med #.\n\nExempel:\n\nclass Konto {\n\n#saldo = 0;\n\nvisaSaldo() {\n\nconsole.log(this.#saldo);\n\n}\n\n}\n\nDet privata värdet kan endast användas inne i klassen.\n\nVad är Flutter?\n\nFlutter är ett utvecklingsverktyg från Google som används för att bygga applikationer.\n\nMed Flutter kan du skapa:\n\nAndroid-appar.\niOS-appar.\nWebbapplikationer.\nDesktop-applikationer.\n\nFlutter använder programmeringsspråket Dart.\n\nSkillnaden mellan JavaScript och Flutter\n\nJavaScript:\n\nAnvänds främst för webb.\nKörs i webbläsaren.\nAnvänds med HTML och CSS.\nHar ramverk som React, Vue och Angular.\n\nFlutter:\n\nAnvänds för mobilappar och flera plattformar.\nBygger användargränssnitt med widgets.\nAnvänder Dart.\nHar en gemensam kodbas för flera plattformar.\n\nDart och objektorienterad programmering\n\nDart bygger också på objektorienterad programmering.\n\nExempel på en klass i Dart:\n\nclass Person {\n\nString namn;\n\nPerson(this.namn);\n\nvoid hälsa() {\n\nprint(\"Hej \" + namn);\n\n}\n\n}\n\nSkapa objekt:\n\nvar person = Person(\"Anna\");\n\nperson.hälsa();\n\nResultat:\n\nHej Anna\n\nFlutter Widgets\n\nI Flutter byggs allt med widgets.\n\nEn widget är en byggsten i användargränssnittet.\n\nExempel:\n\nText.\nBild.\nKnapp.\nLayout.\nMenyer.\n\nExempel på Flutter-widget:\n\nText(\n\"Hello Flutter\"\n)\n\nFlutter använder också klasser för att skapa komponenter.\n\nPraktiskt exempel – Produktklass i JavaScript\n\nclass Produkt {\n\nconstructor(namn, pris) {\n\nthis.namn = namn;\n\nthis.pris = pris;\n\n}\n\nvisaProdukt() {\n\nconsole.log(this.namn + \" kostar \" + this.pris + \" kr\");\n\n}\n\n}\n\nlet produkt = new Produkt(\"Laptop\", 9000);\n\nprodukt.visaProdukt();\n\nResultat:\n\nLaptop kostar 9000 kr\n\nPraktiskt exempel – Arv\n\nclass Djur {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\nljud() {\n\nconsole.log(\"Djuret gör ett ljud\");\n\n}\n\n}\n\nclass Hund extends Djur {\n\nljud() {\n\nconsole.log(\"Voff!\");\n\n}\n\n}\n\nlet hund = new Hund(\"Max\");\n\nhund.ljud();\n\nResultat:\n\nVoff!\n\nVanliga nybörjarfel\n\nGlömmer new\n\nFel:\n\nlet person = Person(\"Anna\");\n\nRätt:\n\nlet person = new Person(\"Anna\");\n\nGlömmer super()\n\nFel:\n\nclass Student extends Person {\n\nconstructor(namn) {\n\nthis.namn = namn;\n\n}\n\n}\n\nRätt:\n\nclass Student extends Person {\n\nconstructor(namn) {\n\nsuper(namn);\n\n}\n\n}\n\nFelaktig användning av this\n\nFel:\n\nconsole.log(namn);\n\nRätt:\n\nconsole.log(this.namn);\n\nFörväxlar klass och objekt\n\nEn klass är en mall.\n\nEtt objekt är en instans skapad från klassen.",21,{"id":140,"lockType":66,"duration":85,"agenda":141,"dripDays":138,"type":44,"content":142,"exemptUserIds":143,"title":144,"unlockDate":5},"l1783709340900","Vad Flutter är och varför det används för apputveckling\n- Installera och konfigurera Flutter SDK och utvecklingsmiljön\n-  Projektstruktur i ett Flutter-projekt\n-  Skapa användargränssnitt med vanliga widgets \n-  Hantera användarinteraktion med knappar och formulär\n-  Köra och testa appen i emulator eller på en fysisk enhet\n- Praktisk övning där vi bygger vår första Flutter-app\n\nEfter lektionen kommer du att förstå hur Flutter fungerar och kunna skapa enkla mobilappar med en modern och skalbar struktur.","https:\u002F\u002Fyoutu.be\u002F8M2-Q-N_J2Q",[62,63],"Intro Apputveckling  & Flutter",{"id":146,"lockType":66,"dripDays":138,"duration":147,"agenda":148,"exemptUserIds":149,"title":135,"unlockDate":5,"type":44,"content":150},"l1783709463266","Ca 72 Min","I denna lektion lär du dig hur klasser och arv (inheritance) fungerar i JavaScript och hur dessa objektorienterade koncept används när du utvecklar appar med Flutter. Du får förståelse för hur du kan skapa återanvändbar och välstrukturerad kod, vilket är en viktig del av modern apputveckling.\n\nUnder lektionen kommer vi att gå igenom:\n\n-  Vad klasser är och varför de används\n-  Hur du skapar klasser med class i JavaScript\n-  Konstruktorer (constructor) och hur objekt skapas\n-  Egenskaper och metoder i klasser\n-  Vad arv (inheritance) innebär och hur det används med extends\n-  Praktiska exempel på objektorienterad programmering i JavaScript\n- Köra och testa Flutter-appar i emulator\n\nEfter lektionen kommer du att kunna skapa egna klasser, använda arv för att återanvända kod och förstå hur objektorienterad programmering används vid utveckling av moderna Flutter-appar.",[62],"https:\u002F\u002Fyoutu.be\u002F5hj1YghFSdQ",{"lockType":66,"id":152,"title":135,"exemptUserIds":153,"unlockDate":5,"type":48,"content":154,"dripDays":138,"agenda":5},"l1784076549151",[62],"quiz-1784076416600","Apputveckling, Flutter, Javascript",{"title":157,"lessons":158,"id":242},"Apputveckling med AI ",[159,165,172,179,187,195,203,211,219,227,235],{"lockType":66,"id":160,"exemptUserIds":161,"title":162,"unlockDate":5,"type":44,"content":163,"dripDays":9,"duration":73,"agenda":164},"l1783781777538",[62],"Bygg din första Väder Applikation genom apier med AI","https:\u002F\u002Fyoutu.be\u002FG1GAU6Ppd3E","I denna lektion bygger du din första AI-applikation med hjälp av JavaScript, ChatGPT och Google Antigravity. Du får lära dig hur moderna AI-verktyg kan användas för att skapa intelligenta webbapplikationer och hur du kombinerar AI med JavaScript för att utveckla smarta funktioner.\n\nUnder lektionen kommer vi att gå igenom:\n\n- Introduktion till Google Antigravity och dess möjligheter\n- Skapa ditt första AI-projekt från grunden\n-  Använda ChatGPT för att planera, skriva och förbättra kod\n- Bygga ett modernt användargränssnitt med JavaScript\n- Integrera AI-funktioner i din applikation\n- Testa, felsöka och vidareutveckla din AI-app\n- Praktiska tips för att arbeta effektivt med AI som utvecklingsverktyg\n- Bygga en komplett AI-applikation steg för steg\n\nEfter lektionen kommer du att ha byggt din första AI-applikation och förstå hur AI kan användas för att utveckla moderna, interaktiva och intelligenta webbapplikationer.\n\nAtt ge dig praktisk erfarenhet av att bygga AI-appar med JavaScript, ChatGPT och Google Antigravity, samt lära dig hur AI kan användas för att effektivisera utveckling och skapa innovativa applikationer.",{"duration":166,"agenda":167,"dripDays":9,"type":44,"content":168,"title":169,"exemptUserIds":170,"unlockDate":5,"id":171,"lockType":66},"Ca 86 Min","\n- Planera och bygga en Journal-app från grunden\n- Implementera Google-inloggning för säker autentisering med mera\n- Koppla applikationen till en databas för att lagra journalanteckningar\n\n\nEfter lektionen kommer du att ha byggt en komplett AI-driven Journal-app med användarinloggning, databasintegration och intelligenta AI-funktioner.\n\nMålet med lektionen:\nAtt ge dig praktisk erfarenhet av att utveckla en fullständig applikation där Google-autentisering, databaser och AI samverkar med mera, för att skapa en modern och användbar tjänst.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=icD-1BuqSDo","Bygg en Journal app med google integration och firebase integration med AI Del 1",[62],"l1783782031375",{"type":44,"content":173,"title":174,"exemptUserIds":175,"unlockDate":5,"duration":176,"agenda":177,"dripDays":9,"lockType":66,"id":178},"https:\u002F\u002Fyoutu.be\u002FWHgQz4J62A8","Bygg en Journal app med google integration och databas integration med AI Del 2",[62],"Ca 79 Min","- Vidareutveckla Journal-appen med nya funktioner\n- Fördjupa databasintegrationen och hantera användardata effektivt\n- Implementera redigering och borttagning av journalanteckningar\n- Använda AI för att analysera, sammanfatta och ge förslag på innehåll\n- Förbättra användargränssnittet och användarupplevelsen\n\nEfter lektionen kommer du att ha en mer avancerad Journal-app med förbättrad databashantering, AI-funktioner och en stabil struktur som kan byggas ut med fler funktioner.\n\nMålet med lektionen:\nAtt vidareutveckla Journal-appen genom att kombinera databasintegration och AI för att skapa en mer komplett, skalbar och professionell app","l1783782511271",{"agenda":180,"duration":181,"dripDays":182,"content":183,"type":44,"unlockDate":5,"title":184,"exemptUserIds":185,"id":186,"lockType":66},"I denna lektion bygger du en LiveScore-app med AI genom att hämta realtidsdata från ett API och använda AI för att effektivisera utvecklingen. Du lär dig hur du arbetar med externa API:er, bearbetar data och presenterar den i ett modernt användargränssnitt.\n-  Introduktion till REST API:er och hur de fungerar\n\n-  Hämta live-data med JavaScript och fetch()\n\n-  Läsa och hantera JSON-data från ett API\n\n- Visa matcher, resultat och annan statistik i appen\n\n- Filtrera och uppdatera data i realtid\n\n- Använda AI för att generera kod, felsöka och utveckla nya funktioner\n\n- Bygga ett responsivt och användarvänligt gränssnitt\n\nEfter lektionen kommer du att ha byggt en fungerande LiveScore-app som hämtar och presenterar data från ett externt API samt förstå hur AI kan användas för att effektivisera utvecklingsprocessen.\n\nMålet med lektionen:\n\nAtt ge dig praktisk erfarenhet av att arbeta med API:er, och AI för att bygga en modern applikation med realtidsdata.","Ca 91 Min",35,"https:\u002F\u002Fyoutu.be\u002FNcIpyc6Hzuc","Bygg en livescore app genom apier med AI",[62],"l1783782881903",{"lockType":66,"id":188,"unlockDate":5,"title":189,"exemptUserIds":190,"content":191,"type":44,"dripDays":192,"agenda":193,"duration":194},"l1783796710147","Starta igâng med Appen Bloggify - Skills - Antigravity Del 1",[62],"https:\u002F\u002Fyoutu.be\u002Fy3lH5GtKg2Q",42,"I denna lektion påbörjar du utvecklingen av Bloggify, en modern bloggplattform där du använder Skills och Antigravity för att bygga applikationen snabbare och smartare med hjälp av AI.\n\nUnder lektionen kommer vi att gå igenom:\n\n-  Introduktion till projektet Bloggify och dess funktioner\n-  Planera applikationens struktur och funktionalitet\n-  Komma igång med Skills och Antigravity\n-  Skapa projektets grund och konfigurera utvecklingsmiljön\n-  Använda AI för att generera kod, lösa problem och effektivisera utvecklingen\n\n\nEfter lektionen kommer du att ha skapat grunden till Bloggify och vara redo att fortsätta utveckla fler funktioner i kommande delar av kursen.\n\nMålet med lektionen:\nAtt komma igång med Bloggify, förstå hur Skills och Antigravity används i utvecklingsprocessen och bygga den första versionen av applikationen.","Ca 101 Min",{"id":196,"lockType":66,"dripDays":197,"agenda":198,"duration":199,"unlockDate":5,"title":200,"exemptUserIds":201,"content":202,"type":44},"l1783973982360",49,"Under den här lektionen tar vi nästa steg i Bloggify-projektet genom att koppla projektet till GitHub och lära oss grunderna i GitHub Actions.\nDet här kommer du att lära dig:\n- Hur du kopplar Bloggify till ett GitHub-repository.\n-Vad GitHub Actions är och hur automatisering fungerar.\nEfter lektionen kommer du att kunna:\n-Använda GitHub för att spara och hantera kod.\n-Förstå hur moderna utvecklingsteam arbetar \n","Ca 61 Min","Bloggify - Github integration - Teori om Github Action - Del 2",[62],"https:\u002F\u002Fyoutu.be\u002Frj08KaCOT7c",{"dripDays":204,"agenda":205,"duration":206,"unlockDate":5,"exemptUserIds":207,"title":208,"content":209,"type":44,"id":210,"lockType":66},56,"I den här lektionen fortsätter vi att arbeta med GitHub Actions och bygger vidare på våra kunskaper genom att skapa och förbättra automatiserade arbetsflöden i Bloggify.\nDet här kommer du att lära dig:\n- Skapa och konfigurera en egen GitHub Actions-workflow.\n- Förstå hur flera jobs och steps fungerar tillsammans.\n- Automatisera tester och byggprocesser.\n- Använda GitHub Actions för att säkerställa kodkvalitet.\n- Läsa loggar och felsöka när en workflow misslyckas.\n- Förstå hur CI\u002FCD används i verkliga utvecklingsprojekt.\nEfter lektionen kommer du att kunna:\n- Skapa egna GitHub Actions-workflows.\n- Automatisera vanliga arbetsuppgifter i ett projekt.\n- Tolka loggar och identifiera fel i en workflow.\n- Förstå hur professionella utvecklingsteam använder GitHub Actions för att effektivisera sitt arbete.","Ca 82 Min",[62],"Bloggify - Nu använder vi Github Action - Del 3","https:\u002F\u002Fyoutu.be\u002F15CfQQwv8kk","l1783975112207",{"agenda":212,"duration":213,"dripDays":214,"content":215,"type":44,"unlockDate":5,"exemptUserIds":216,"title":217,"id":218,"lockType":66},"Under lektionen kommer du att:\n- Förstå vad Continuous Integration (CI) innebär.\n- Verifiera att workflow-filen fungerar genom att göra en commit och push.\n- Läsa och tolka resultatet från GitHub Actions.\n- Låta AI Felsöka vanliga problem när ett workflow eller tester misslyckas.\n- Kunna Förklara varför automatiska tester är viktiga i moderna utvecklingsprojekt.\n- Använda GitHub Actions som en del av projektets utvecklingsprocess.\n","ca 74 Min",63,"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QZgIZzDGiXQ",[62],"Bloggify - Nu använder vi Github Action för att köra testerna - Del 4","l1784155329536",{"agenda":220,"duration":221,"dripDays":222,"content":223,"type":44,"unlockDate":5,"exemptUserIds":224,"title":225,"id":226,"lockType":66},"Under lektionen kommer du att:\n- Förstå vad Continuous Integration (CI) innebär.\n- Verifiera att workflow-filen fungerar genom att göra en commit och push.\n- Distribution i Firebase (check) och testning\n- Läsa och tolka resultatet från GitHub Actions.\n- Låta AI Felsöka vanliga problem när ett workflow eller tester misslyckas.\n- Kunna Förklara varför automatiska tester är viktiga i moderna utvecklingsprojekt.\n- Använda GitHub Actions som en del av projektets utvecklingsprocess.\n","Ca 67 Min",70,"https:\u002F\u002Fyoutu.be\u002FklzNuix48U8",[62],"Bloggify -  Distribution i Firebase (check) och testning - Del 5","l1784210716566",{"unlockDate":5,"exemptUserIds":228,"title":229,"content":230,"type":44,"dripDays":231,"agenda":232,"duration":233,"lockType":66,"id":234},[62],"Projektet Bloggify Done, Marknadsföring hemsida","https:\u002F\u002Fyoutu.be\u002FsMnthYtWSN0",77,"Under lektionen kommer du att:\n- Fixa fel meddelande\n- Fixa hemsidan\n- Avslutning","Ca 38 min","l1784504447504",{"lockType":66,"id":236,"title":237,"exemptUserIds":238,"unlockDate":5,"type":239,"content":240,"dripDays":241,"agenda":5},"l1784076575065","Certifikatuppgiften",[62],"certificate_assignment","Certifikatuppgift – Upptäck Sverige\nMål\nBygg en modern mobilapp i Flutter där användare kan upptäcka sevärdheter, naturupplevelser och populära besöksmål runt om i Sverige. Appen ska använda Firebase och minst ett externt API för att hämta information om platser och sevärdheter. Exempelvis kan du använda Visit Swedens nationella API eller ett annat API med turist- och platsinformation.\nFunktionella krav\nDin app ska innehålla:\nInloggning med Firebase Authentication.\nCloud Firestore för att spara användarens favoriter.\nMinst ett externt API.\nMinst 5 olika skärmar.\nSökfunktion.\nDetaljsida för varje plats.\nFavoritfunktion.\nResponsiv och modern design.\nFelhantering och laddningsindikatorer.\nGitHub-repository.\nExempel på funktioner\nAppen kan visa:\n🏞️ Nationalparker\n🏰 Slott\n🌊 Sjöar\n🥾 Vandringsleder\n🌲 Naturreservat\n🏖️ Stränder\n🏙️ Städer\n🎭 Museum\n🍽️ Restauranger\n📍 Sevärdheter nära användaren\nExtra funktioner (Frivilligt)\nGoogle Maps\nGeolokalisering\nVäderinformation\nRecensioner\nBilder\nDela favoritplatser\nAI-rekommendationer (helt frivilligt)\nInlämning\nLämna in:\nGitHub-länk\nVideodemonstration (3–5 minuter)\nREADME.md med:\nBeskrivning av projektet\nAPI som används\nHur appen startas\nSkärmbilder\nBedömningskriterier\nFör att bli godkänd ska du visa att du kan:\n- Bygga en komplett Flutter-app.\n- Använda Firebase Authentication.\n- Använda Cloud Firestore.\n- Integrera ett externt API.\n- Visa och söka information.\n- Spara favoriter.\n- Strukturera projektet på ett professionellt sätt.\n- Använda Git och GitHub.",84,"m1783781716639",1793790609010]